如下所示,我定义了一个名为Person
的类,其中有两个成员名为age
和name
:
>>> class person:
age = None
name = None
然后我定义这个类的两个对象如下:
>>> p1 = person
>>> p2 = person()
我的问题是p1
和p2
之间的区别是什么:
>>> p1
<class __main__.person at 0x0328FF80>
>>> p2
<__main__.person instance at 0x03273738>
>>>
他们行为平等:
>>> p1.age = 19
>>> p1.name = "Steve"
>>> p2.age = 20
>>> p2.name = "Jimme"
>>> p1.age
19
>>> p1.name
'Steve'
>>> p2.age
20
>>> p2.name
'Jimme'
>>>
Person
是一个类。表达式Person()
创建该类的实例。所以p1
和p2
之间的区别是p1
是对类的引用,p2
是对该类的实例的引用。例如,可以使用p1
实例化其他Person
对象:如果
person
有实例变量,您可能会发现一个差异。在您的例子中,name
和age
是类变量。这意味着它们被person
类的所有实例共享。这不太可能是你想要的行为。你知道吗如您所见,现在所有新的
person
都被称为bob
。你知道吗这里有一个稍微合理的
person
类,仍然可以用空的()
实例化:这里,
name
和age
是实例变量。你知道吗相关问题 更多 >
编程相关推荐