python知识点学习——类

参考资料:1.Python:函数和类_江南好-CSDN博客_python 类和函数

                  2.self参数 - __ init__ ()方法 super(Net, self).__init__()是什么_热爱可抵漫长岁月-CSDN博客

        本篇内容是对参考链接内容的学习记录。

        根据约定,在python中类的名称的首字母是大写的,当然,这只是约定,即类名称首字母也可是小写的。

1.类中的特殊方法__init__()

(1)在每次根据类创建实例时,都会被自动运行。

(2)类的各个属性都是在该方法中定义和初始化的。

(3)由于神经网络中一些结构的设置我们希望在创建实例时就有,所以这些设置一般都放在__init__()方法中

2.类中方法形参self

 (1)类中定义的每一个方法都会有形参self,包括__init__()也有。

 (2)它是一个指向实例本身的引用,作用在于让类方法通过实例来访问类中的属性和方法。

 (3)调用与类相关联的方法时都将自动传递实参self

   (4)   类中的方法的第一个参数一定要是self,而且不能省略。

class Person():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def printname(self):
        print(self.name)

3.继承

        一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法以区分子类和父类。

(1)创建子类时,父类必须包含在当前python程序文件中,且位于子类前面。

(2)定义子类时,必须在括号内指定父类的名称。

(3)将父类和子类关联起来的方法super(),super()调用于子类方法__init__中的首行:                              super().__init__(a,b,c) # 初始化父类的属性,a,b,c由子类方法__init__()提供。

class Person():
    def __init__(self,name,age):
       ...
Class Teacher(Person):
    def __init__(self,name,age,teachertitle):
        super().__init__(name,age)
        #参考链接2,上面这句也可以写成
        #super(Teacher,self).__init__(name.age)
        self.teachertitle=teachertitle

super(Net, self).init():

        在神经网络中常看到super(Net, self).init()这句是指首先找到Net的父类(比如是类NNet),然后把类Net的对象self转换为类NNet的对象,然后“被转换”的类NNet对象调用自己的init函数,其实简单理解就是子类把父类的__init__()放到自己的__init__()当中,这样子类就有了父类的__init__()的那些东西。
        神经网络里常见的Net类继承nn.Module,super(Net, self).init()就是对继承自父类nn.Module的属性进行初始化。而且是用nn.Module的初始化方法来初始化继承的属性。

class Net(nn.Module):

    def __init__(self):
        super(Net, self).__init__()

参考链接2中还有更多的例子可以参考。

4. __call__()方法

参考链接:Python 中__call__ 的用法_南淮北安的博客-CSDN博客

        在定义类型的时候,实现__call__函数,这个类型就成为可调用的,换句话说,我们可以把这个类型的对象当作函数来使用,相当于重载了括号运算符。

class Person():
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __call__(self, friend):
        print('My friend is %s...' % friend)

T=Person('dj',30)
T('mark')  ###对象可以像函数一样

输出结果是:

文中若有不妥或错误之处,还望指出!

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值