python可以通過__name__的特殊方法來獲得所有類的對應類名。如:
class A(object):
pass
print(A.__name__) # A
但如果想獲得某一變量所屬的類的類名,用該方法是行不通的:
a = A()
print(a.__name__)
此時,編譯器就會報錯“AttributeError: ‘A’ object has no attribute ‘name’”。
因爲a只是一個類實例,不是類本身,因此不具有__name__屬性。此時,要獲得a的類名可以通過如下兩種方法:
print(a.__class__.__name__) # A
或者:
print(type(a).__name__) # A
以上兩種方法的原理是相同的,都是先獲得變量所屬的類,再獲得該類的類名。