码迷,mamicode.com
首页 > 其他好文 > 详细

风变编程干货整理-2021.6.5

时间:2021-06-06 19:22:32      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:elf   实例化   应该   com   info   load   http   1年   初始   

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

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

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

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

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

3.技术图片

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

标签:elf   实例化   应该   com   info   load   http   1年   初始   

原文地址:https://www.cnblogs.com/gujiakai-top/p/14854885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!