class 类

用类定义对象怎么操作

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去调用。 

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值