在 Python 中动态定义新的实例属性 [重复]
Posted
技术标签:
【中文标题】在 Python 中动态定义新的实例属性 [重复]【英文标题】:Defining a new instance attribute dynamically in Python [duplicate] 【发布时间】:2014-09-03 13:39:39 【问题描述】:为什么可以在 Python 中为每个类实例动态定义一个新属性,只要它不是 object
类型的?
class NewStyle(object):
pass
class OldStyle:
pass
a = object()
# This line raises AttributeError
a.foo = 1
# All of these work fine
a = Exception()
a.foo = 1
a = OldStyle()
a.foo = 1
a = NewStyle()
a.foo = 1
这种行为在 Python 3 中似乎是相同的
【问题讨论】:
【参考方案1】:来自the python doc:
注意:
object
没有__dict__
,因此您不能将任意属性分配给object
类的实例。
一些类定义提供了__dict__
属性,然后它默认包含在实例中。
另见__slots__
【讨论】:
dict的默认实现从哪里来,如果不是来自object
?以上是关于在 Python 中动态定义新的实例属性 [重复]的主要内容,如果未能解决你的问题,请参考以下文章