class Boo():
pass
var1 = Boo
var1.x = 4
但Boo中没有x,它从未被宣布过!这怎么可能?
- 编辑 -
哇,这是令人兴奋的,你可以做到这一点!答案 0 :(得分:2)
默认情况下,类具有__dict__
,正是为此目的(运行时分配和属性修改)。常规属性赋值只是在其中放置相应的名称和值。
它与在课堂定义时设置它没有什么不同,真的:
>>> class Boo:
... x = 1
...
>>> Boo.y = 2
>>> Boo.__dict__
mappingproxy({'__dict__': <attribute '__dict__' of 'Boo' objects>,
'__doc__': None,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'Boo' objects>,
'x': 1,
'y': 2})
这样,您可以在已经定义类之后向类提供方法和变量,并且它将影响该类的预先存在的实例。如果您听说有人说Python是一种动态编程语言,那么您在这里看到的是dynamic在这种情况下实际意味着什么的一个方面。