如图所示:
In [1]: from datetime import datetime
In [2]: class A(object):
...: now = datetime.now()
...: def __init__(self):
...: pass
...: def p(self):
...: print(self.now)
...:
In [3]: datetime.now()
Out[3]: datetime.datetime(2018, 5, 22, 17, 54, 4, 593295)
In [4]: a_1 = A()
In [5]: a_1.p()
2018-05-22 17:53:57.597022
In [6]: datetime.now()
Out[6]: datetime.datetime(2018, 5, 22, 17, 54, 29, 177489)
In [7]: a_2 = A()
In [8]: a_2.p()
2018-05-22 17:53:57.597022
我无法理解Python如何初始化类变量,以及为什么我创建了两个类对象,但这两个类的类变量的值是否相同?
感谢您的帮助。
答案 0 :(得分:0)
@Mike Scotty的评论是正确的,但为了清晰起见需要扩大。
当设置变量而没有self时。在类体中它前面是类变量,它们在类的所有实例中都具有相同的值。如果您需要与实例相关的变量,则需要在方法中初始化它们,最好是 init ,并在名称前加上'self。'。
所以你的班级定义应该是:
class A(object):
def __init__(self):
self.now = datetime.now()
def p(self):
print(self.now)