课程
/后端开发
/Python
/python进阶
每次实例化一个类的时候,只执行类下面的__init__方法吗?我总感觉会按照顺序执行,所以应该每次实例化的时候count都要重置为1……,请问有没有相关文档?
2019-03-25
源自:python进阶 4-6
正在回答
不执行,每次实例化只是从init执行,准确来说是从__new__执行.count只是实利外层作用域的一个变量
个人认为,一个类实例化对象时,会自动调用__init__()方法(也就是java中说的构造方法),自然就不会不会执行多次count赋值0的操作。count是类的属性,因此只会在加载这个类时赋一次值。
经过测试,def __init__(self, name):前的语句只在类定义的时候执行,之后无论多少次实例化都不会再执行,实例化的时候只从def __init__(self, name):开始往后执行,所以count才不会每次实例化的时候都清零。
count=0是这个类中count这个属性的初始值,每有一个实例被创建就会执行一次__init__这个函数,而在__init__里有一个操作是Person.count+=1,这步的操作是在改变count类属性的值,每创建一个实例这个count属性就会加1,所以就相当于一个计时器,而类属性是所有实例共有的属性,所以在最后print的时候所有的实例都可以通过person.conut去调用count当前的值。
雨过云舒
对啊 我也想问这个问题 __init__()方法每次都要执行 但是count 看来是不执行
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计