- 一、组合补充
- 1、类和对象也可以充当字典的key
- 2、在类的使用当中主要是搞清楚其中的self代表的是谁
- 二、主动调用其他类的成员
- 1、在不同的两个类之间,其中一个类想要调用其他类中的成员的方法,可以直接使用被调用的类名后面跟上方法,这样做法便不能自动后传参
class Foo: def f1(self): print("吾即大灾变") class Base: def f2(self): Foo.f1(1) #这里python便不能自动给其中传参,需要手动传参 obj=Base() obj.f2()当然,我们还可以这样
class Foo: def f1(self): print("吾即大灾变") class Base: def f2(self): sk=Foo() #我们可以提前将它实例化,这样便和普通调用没有什么区别 sk.f1() obj=Base() obj.f2() - 2、或者可以使用super( ).f1( ),按照继承顺序一个一个的查找,但是我们得知道这样一件事,super函数不是简单的按照父级顺序查找,而是按照继承顺序一个一个的查找下去
class Foo: def f1(self): #第二步,我们在Info类之中无法找到该功能之后,我们便在他的第基类中寻找 super().f1() #第三步,调用super函数,由于使用Info的对象调用函数故此时super会找第二个父类 print("一无是处") #第六步,继续打印,程序结束 class Bar: #第四部,super会从此类中开始寻找方法 def f1(self): print("没有猎物的猎手") #第五步,找到方法,完成打印功能 class Info(Foo,Bar): pass obj=Info() obj.f1() #第一步:我们使用对象那个obj开始调用方法f1最后的打印结果便是 “没有猎物的猎人”和“一无是处”
- 1、在不同的两个类之间,其中一个类想要调用其他类中的成员的方法,可以直接使用被调用的类名后面跟上方法,这样做法便不能自动后传参
- 三、特殊成员
- 1、类名后加入一个括号,会自动执行__init__()函数
- 2、对象加入括号 ,将会自动执行__call__( )函数
- 3、对象加中括号,将会自动执行__getitem__( )函数
- 4、对象加中括号=一个值 ,将会自动执行__setitem__()函数,此函数无返回值
- 5、del 对象[ ] ,将会自动执行__delitem__( )函数,此函数无返回值
- 6、对象+对象,会自动执行__add__( )函数
- 7、with 对象,会自动执行两个函数,__enter__( )和__exit__( )两个函数,其中第一个函数返回值,我们可以使用with 对象 as f,的方法让f获得那个返回值
- 8、真正的构造方法
- 其实在类名中间加入括号的情况下真正先执行的是__new__( )函数,在这个函数之中,我们可以给它返回object.__new__(cls),我们在使用对象名接受到这个值,这样才会接着在init函数之中执行数据初始化组合补充、某类中寻找其他类的方法以及特殊成员
浙公网安备 33010602011771号