用类定义对象怎么操作
class Solution(object):
def minimumDeleteSum(self, s1, s2):
m, n = len(s1), len(s2)
dp = [[0]*(n+1) for _ in range(m+1)]
for i in range(1, m+1):
for j in range(1, n+1):
if s1[i-1] == s2[j-1]:
dp[i][j] = dp[i-1][j-1] + ord(s1[i-1])
else:
dp[i][j] = max(dp[i-1][j], dp[i][j-1])
total = 0
for s in s1+s2:
total += ord(s)
return total - 2*dp[-1][-1]
a = Solution()
print(a.minimumDeleteSum(s1 = "sea", s2 = "eat")) # 对于函数中有要输入变量的情况,一定要这样调用啊
"先定义类"
import torch
import torch.nn as nn
class LinearModel(nn.Module):
def __init__(self, ndim):
super(LinearModel, self).__init__()
self.ndim = ndim#输入的特征数
self.weight = nn.Parameter(torch.randn(ndim, 1)) # 定义权重
self.bias = nn.Parameter(torch.randn(1)) # 定义偏置
def forward(self, x):
# 定义线性模型 y = Wx + b
return x.mm(self.weight) + self.bias
"定义对象"
lm = LinearModel(5) # 定义模型,输入参数特征数为5
x = torch.randn(4, 5) # 定义输入x,批次大小为4
lm(x) # 将x放入模型得到输出
lm.forward(x) # 这两种调用方法哪个对?
super().__init__() 、 super(B,self).__init__()
有什么用?
1)__init__() 是python中的构造函数,用来定义类。init全称是initialize,初始化的意思。
2)__init__(self,a,b,....)函数中除了self外有几个参数,接下来就都得给他们做出定义。定义完init()后,创建的每个实例都有自己的属性,也方便直接调用类中的函数。
class Rectangle(): #定义一个矩形的类,目的是求周长和面积
def __init__(self,a,b):
self.a = a
self.b = b # __init__()括号里有几个参数,这里就得定义几个
def getPeri(self):
return (self.a + self.b)*2
def getArea(self):
return self.a * self.b
rect = Rectangle(3,4)
print(rect.getPeri())
print(rect.getArea())
print(rect.__dict__)
运行结果:
14
12
{'a': 3, 'b': 4}
若在定义这个类时,没有定义输入的参数,那么在调用这个类时就不能输入参数。
2)super(). __ init __(),如果子类B和父类A,都写了init方法,那么A的init方法就会被B覆盖。想调用A的init方法需要用super去调用。