需要一个简单的方法将元信息/类添加到python列表/元组变量?

use*_*514 3 python meta list setattr

所有,

我希望将简单的元信息包含在列表对象中,请参阅下面的代码.

>>> 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__',
...
Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. 为什么我不能将setattr()用于变量"a",因为列表应该已经具有' setattr '功能?

  2. 是否有一种简单的方法将元信息附加到list/tuple变量而不是重载' setattr '或将该列表嵌入到dict中?

谢谢!

Ign*_*ams 5

C中定义的基类型不能添加任意属性; 您必须从中派生Python类型才能更改它.

>>> class MyList(list):
...   pass
... 
>>> m = MyList((1, 2, 3))
>>> len(m)
3
>>> m.foo = 42
>>> m.foo
42
Run Code Online (Sandbox Code Playgroud)