type(obj)
和 obj.__class__
有什么区别?有没有可能是 type(obj) is not obj.__class__
?
我想编写一个在提供的对象上通用的函数,使用与另一个参数相同类型的默认值 1。下面的#1 或#2 哪个变体会做正确的事情?
def f(a, b=None):
if b is None:
b = type(a)(1) # #1
b = a.__class__(1) # #2
最佳答案
type(obj)
和 type.__class__
对于旧样式类的行为不同:
>>> class a(object):
... pass
...
>>> class b(a):
... pass
...
>>> class c:
... pass
...
>>> ai=a()
>>> bi=b()
>>> ci=c()
>>> type(ai) is ai.__class__
True
>>> type(bi) is bi.__class__
True
>>> type(ci) is ci.__class__
False
关于python - type(obj) 和 obj.__class__ 的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1060499/