这两种方法有什么区别吗? 选项1:
class a(object):
def __init__(self):
self.x = 123
self.y = 345
选项2:
class a(object):
x = 123
y = 345
这两个选项有什么区别吗? 提前谢谢。
答案 0 :(得分:5)
第一种方法的一个例子(实例级变量):
instance0 = a()
instance1 = b()
instance0.x = 5
print instance1.x # prints 123
print a.x # undefined variable - x is not defined
第二种方法的一个例子(类级变量):
instance0 = a()
instance1 = b()
instance0.x = 5
print instance1.x # prints 5
print a.x # prints 5
第二种方法,变量在类级别分配,意味着更改此值会传播到该类的所有实例。您也可以在没有类实例的情况下访问变量。
答案 1 :(得分:4)
是的,在第一种情况下,类a的每个对象都有自己的x和y副本,在第二种情况下,类a的所有对象都共享它们。
顺便说一句,如果您从Python开始,请使用大写字母作为类名的第一个字符,例如我的课。人们习惯了这一点,一旦他们变大,它将帮助你理解你自己的程序。