__init__是否属于类属性?结合Python代码实例答疑
关于Python类中__init__是否属于类属性的解答
先看你给出的代码示例:
class Student: school = "stackoverflow" def __init__(self, name, course): self.name = name self.course = course
直接给结论:__init__确实属于类属性,不是只有school才是。
具体解释:
- 类属性的定义很明确:类体中直接定义的所有成员(包括变量、方法)都是类的属性,它们都会被存在类的
__dict__属性里。你可以试试打印Student.__dict__,会看到__init__和school都在这个字典中。 - 两者只是类属性的不同类型:
school是类数据属性,属于类级别的共享变量,所有Student实例都会共用这个值(除非实例自己重新赋值覆盖)。__init__是类函数属性,当你创建实例时,Python会自动把这个类方法绑定到实例上,变成实例方法来执行,但它本身的归属还是类的属性——你可以直接通过Student.__init__来访问这个方法,就像访问Student.school一样。
- 哪怕
__init__是特殊的构造方法,本质上和你在类里定义的其他普通方法没有区别,都是类属性的一种。
内容的提问来源于stack exchange,提问作者user21488634
相关产品推荐
相关产品推荐

