【发布时间】:2016-08-02 02:11:40
【问题描述】:
我想知道为什么以下代码有效?
#!/usr/bin/env python3
import sys
class Car():
def __init__(self):
pass
if __name__ == '__main__':
c = Car()
c.speed = 3
c.time = 5
print(c.speed, c.time)
无意中发现init中不用初始化属性。我向每位导师学习,我必须将作业放入 init 中,如下所示。
#!/usr/bin/env python3
import sys
class Car():
def __init__(self):
self.speed = 3
self.time = 5
if __name__ == '__main__':
c = Car()
print(c.speed, c.time)
如果有官方文档能解释一下就更好了。
【问题讨论】:
-
你看过Python教程中关于Classes的官方文档吗:docs.python.org/3/tutorial/classes.html
-
数据属性对应于 Smalltalk 中的“实例变量”和 C++ 中的“数据成员”。数据属性不需要声明;像局部变量一样,它们在首次分配给它们时就立即存在。
-
但是我也想知道,在实践中,这个特性是用来做什么的?它不是类变量,因此不能共享。看起来它是用来存储一些值的,如果它是用来存储一些数据的,为什么不使用实例变量呢?实例变量似乎更适合用于存储一些数据。
-
它是一个实例变量!实例命名空间中的任何变量都是实例变量——不管它是如何到达那里的。
-
这些术语真的很混乱......
标签: python class variable-assignment