是否可以向其范围之外的对象添加属性?
即:以下代码不起作用,我该怎么做我打算用该代码做什么?
b = object()
b.foo = "bar"
Run Code Online (Sandbox Code Playgroud)
小智 5
一般来说,这是可能的.但是,大多数类型都不可能用C语言实现,而不是用Python实现.不幸的是,这适用于最常用的标准Python解释器的内置类型.
如果你在Python中定义自己的类,你会发现它工作正常.
class MyObject(object):
pass
b = MyObject()
b.foo = "bar"
Run Code Online (Sandbox Code Playgroud)
实例object()是" 无特征的 "设计,因为它们没有任何魔术方法(没有dict,没有getter/setter,没有迭代等)来指定你可能期望从其他类型的默认行为.为了使它工作,你必须先进行子类化object:
class Foo(object): pass
f = Foo()
f.bar = "omgwtf!"
Run Code Online (Sandbox Code Playgroud)