Skip to main content
 首页 » 编程设计

python之使用 object.__setattr__ 时出现 AttributeError

2025年05月04日7youxin

最后三行有什么问题?

class FooClass(object): 
    pass  
bar1 = object()  
bar2 = object()  
bar3 = object()  
foo1 = FooClass()  
foo2 = FooClass()  
foo3 = FooClass()  
object.__setattr__(foo1,'attribute','Hi') 
foo2.__setattr__('attribute','Hi') 
foo3.attribute = 'Hi' 
object.__setattr__(bar1,'attribute','Hi') 
bar2.attribute = 'Hi' 
bar3.attribute = 'Hi' 

我需要一个具有单个属性(如 foo)的对象,我应该为它定义一个类(如 FooClass)吗?

请您参考如下方法:

object 是 built-in type ,因此您不能覆盖其实例的属性和方法。

也许您只想要一个 dictionary或 collections.NamedTuples :

>>> d = dict(foo=42) 
{'foo': 42} 
>>> d["foo"] 
42 
 
>>> from collections import namedtuple 
>>> Point = namedtuple('Point', ['x', 'y'], verbose=True) 
>>> p = Point(11, y=22)     # instantiate with positional or keyword arguments 
>>> p[0] + p[1]             # indexable like the plain tuple (11, 22) 33 
>>> x, y = p                # unpack like a regular tuple 
>>> x, y (11, 22) 
>>> p.x + p.y               # fields also accessible by name 33 
>>> p                       # readable __repr__ with a name=value style Point(x=11, y=22)