Python 名称是一个类级变量吗?
通常,可以通过该类的实例访问类级属性 但是,对于像Python 名称是一个类级变量吗?,python,oop,Python,Oop,通常,可以通过该类的实例访问类级属性 但是,对于像\uuuuu name\uuuuuu这样的属性,\uuuuuu base\uuuuuu我无法通过实例访问它们。 如何/在何处定义这些属性? 请参阅下面的代码: class MyParentClass: k = 12 class MyClass(MyParentClass): pass obj = MyClass() print(MyClass.k) # ok print(MyClass.__name__) # ok
\uuuuu name\uuuuuu
这样的属性,\uuuuuu base\uuuuuu
我无法通过实例访问它们。
如何/在何处定义这些属性?
请参阅下面的代码:
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.\u name)无法从实例访问它们,因为它们不是类属性,而是类对象的属性。也许您想获取类的名称:
打印(对象类名称)
输出:
MyClass
也许你可以把工作代码和失败的代码放在一起。这与发布时的格式有关。我更正了最初的帖子。它是\uuuuu name\uuuuuuu
,而不是\uuuuu name
,因此如果我正确理解MyClass
对象,它包含一个类模板(由子类继承,并可用于从该类实例化的对象)和一些附加属性(不是类模板的一部分),哪些来自类型
类,并且仅在类本身上可用?