【发布时间】:2011-05-25 12:07:23
【问题描述】:
我想知道是否可以动态地向对象添加字段。例如,我希望能够添加如下内容:
user = object()
user.first_name = 'John'
user.last_name = 'Smith'
当我在 Python 命令行解释器中执行它时,我得到:
AttributeError: 'object' object has no attribute 'first_name'
有什么想法吗?
【问题讨论】:
我想知道是否可以动态地向对象添加字段。例如,我希望能够添加如下内容:
user = object()
user.first_name = 'John'
user.last_name = 'Smith'
当我在 Python 命令行解释器中执行它时,我得到:
AttributeError: 'object' object has no attribute 'first_name'
有什么想法吗?
【问题讨论】:
试试这个:
class Object:
pass
obj = Object()
obj.x = 5
【讨论】:
pass: docs.python.org/tutorial/controlflow.html#pass-statements 2) 不,当您执行obj.x = 5 时,您只需将x 属性添加到Object 的单个实例。如果您希望所有 Object 实例共享 x,则必须执行 Object.x = 5。
None。以 gruszczy 建议的方式创建的对象没有任何类型的“原型”;您可以随意添加和删除属性,它对Object类的任何其他实例都没有影响。
您不能像这样分配给object 实例的属性。从object 派生,并使用该类的实例。
【讨论】: