我想知道两者之间是否有区别
class Test(object):
def __init__(self):
print self.__class__.__name__
和
class Test(object):
def __init__(self):
print type(self).__name__
?
有理由偏爱其中一个吗?
(在我的用例中,我想用它来确定记录器名称,但我想这并不重要)
最佳答案
>>> class Test(object): pass
>>> t = Test()
>>> type(t) is t.__class__
True
>>> type(t)
__main__.Test
所以这两个是一样的。 我会使用 self.__class__
因为它更明显。
但是,type(t)
不适用于旧式类,因为旧式类的实例类型是 instance
,而一个新样式的类实例是它的类:
>>> class Test(): pass
>>> t = Test()
>>> type(t) is t.__class__
False
>>> type(t)
instance
关于Python:self.__class__ vs. type(self),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386166/