所有
我希望将简单的元信息包含在列表对象中,请参阅下面的代码。
>>> a = []
>>> a.foo = 100
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: 'list' object has no attribute 'foo'
>>> setattr(a,"foo",100)
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: 'list' object has no attribute 'foo'
>>> dir(a)
...
'__setattr__',
'__setitem__',
...
我的问题是
为什么我不能将setattr()用于变量“a”,因为列表应该具有“ setattr ”功能?
是否有一种简单的方法将元信息附加到list / tuple变量而不是重载' setattr '或将该列表嵌入到dict中?
谢谢!
答案 0 :(得分:5)
C中定义的基类型不能添加任意属性;你必须从它们派生一个Python类型才能改变它。
>>> class MyList(list):
... pass
...
>>> m = MyList((1, 2, 3))
>>> len(m)
3
>>> m.foo = 42
>>> m.foo
42
答案 1 :(得分:1)
class mylist(list):
pass
l = mylist()
l.foo = 'bar'