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
以上两种方法的原理是相同的,都是先获得变量所属的类,再获得该类的类名。