风变编程干货整理-2021.6.5

  • 2021年6月5日下午列车讨论:

1.类属性本身不需要实例化也可以调用。

2.实例化之后得到的就是实例属性,就是专属于各个实例自己的属性,就是初始化方法__init__里面那些self.xxx=xxx。

这里的self是一个占位符,直接指向实例对象,也就是说,如果是实例对象的方法或者属性,就一定要添加self这个占位符。

相当于在类没有创建实例对象前,用self先给它占个位,实例化后,self就“退位让贤”。

3.风变编程干货整理-2021.6.5

4.pass语句,其作用是:

不执行任何操作,但pass本身是一个语句,所以计算机还是会执行该语句的,

但如果不写,计算机会报错,因为计算机找不到可执行的代码,就会报错。

5.在检索时,应该先遵循多重继承的就近原则,再看是否有多层继承,如果有的话,检索到底,如果没有,则继续向后检索父类。

6.就近原则中的一个细节:多重继承中,若某父类还有父类的话,会先继续往上找到顶。

#案例1:
class C0:
    name='C0'
class C1:
    num=1
class C2(C0):
    num=2
class C3:
    name='C3'
class C4(C1,C2,C3):
    pass
ins=C4()
print(ins.name)
print(ins.num)
#C0,C1,C3属于同一个层级,C1,C2,C3是C4的多重继承;C0是C4的多层继承。
#先看多重继承,打印ins.name 的时候还是先去找C1,C1没有name这一属性;接着去找C2,此时发现有多层继承(C0是C4的多层继承),便去找C0,C0有name这一属性,所以打印出ins.name为‘C0’;
#打印ins.num的时候还是先去找C1,C1有num这一属性,所以打印出ins.num为1。
#输出结果:
#C0
#1

#案例2:
class C0:
    name='C0'
class C1(C0):
    num=1
class C2(C0):
    num=2
class C3(C0):
    name='C3'
class C4(C1,C2,C3):
    pass
print(C4.name)
print(C4.num)
#输出结果:
#C3
#1

#案例3:
class C0:
    name='C0'
class C1(C0):
    num=1
class C2(C0):
    num=2
class C3(C0):
    name='C3'
class C4(C1,C2,C3):
    pass
a=C4()
print(a.name)
print(a.num)
#C1,C2,C3是C4的多重继承,C0是C4的多层继承。
#输出结果:
#C3
#1

辅助理解图:
风变编程干货整理-2021.6.5

上一篇:docker容器的数据卷


下一篇:测试用例设计方法小结-正交表