通常可以通过该类的实例访问类级别的属性但是,对于像__name__
、__bases__
这样的属性,我无法通过实例访问它们。如何/在哪里定义这些属性?请参阅以下代码:
class MyParentClass:
k = 12
class MyClass(MyParentClass):
pass
obj = MyClass()
print(MyClass.k) # ok
print(MyClass.__name__) # ok
print(obj.k) # ok
print(obj.__name__) # error
它们不能从实例访问,因为它们不是类属性,而是类对象的属性。
也许你想得到类名:
print(obj.__class__.__name__)
输出:
MyClass
我认为更可能的错误是拼写错误:
print(obj.__name) <----
它应该有灌篮之后
编辑,我看到deceze评论了同样的事情