2016-01-26 83 views
1

Pythons documentation say比较类型的泛型类型的对象

例如,下面的两个语句创建相同类型的对象:

>>> class X: 
...  a = 1 
... 
>>> X = type('X', (object,), dict(a=1)) 

我测试了以下code声明:

class X: 
    a = 1 

foo = X() 

X = type('X', (object,), dict(a=1)) 
Y = type('X', (object,), dict(a=1)) 

bar = X() 
bar2 = X() 
foobar = Y() 

print(type(foo) is type(bar)) # False 

print(type(bar) is type(bar2)) # True 

print(type(bar) is type(foobar)) # False 

正如你所看到的,物体o f这些类不相等。是否有任何其他可能的比较来评估这些相同的类为True?

+0

他们创建等价类型的对象,但不同的对象。如果你使用两次相同的方法,与“is”相比,它们也会有所不同。 – L3viathan

回答

1

不,因为类不相同。他们是独立的班级,表现相同(目前!)。

如果你添加一个方法或属性到其中一个类,它应该返回False吗?事实是,这些类是独立的对象,位于不同的内存位置,这就是为什么is返回False。