需要一种向python列表/元组变量添加元信息/类的简单方法吗?

需要一种向python列表/元组变量添加元信息/类的简单方法吗?,python,list,meta,setattr,Python,List,Meta,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,

全部,

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

>>> 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__',
...
>a=[]
>>>a.foo=100
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“列表”对象没有属性“foo”
>>>setattr(a,“foo”,100)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“列表”对象没有属性“foo”
>>>处长(a)
...
"设置属性",,
'设置项'',
...
我的问题是

  • 为什么我不能对变量“a”使用setattr(),因为列表应该已经有了“setattr”函数

  • 是否有一种简单的方法将元信息附加到列表/元组变量,而不是重载“setattr”或将该列表嵌入dict


  • 谢谢

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

    >>> class MyList(list):
    ...   pass
    ... 
    >>> m = MyList((1, 2, 3))
    >>> len(m)
    3
    >>> m.foo = 42
    >>> m.foo
    42
    
  • 它确实有setattr。正如消息所说,它没有“foo”属性
  • 是的,将其子类化,例如

  • 像往常一样,你比我先到+1谢谢,有没有办法愚弄python,因为m是列表类型?>>类型(m)
    
    class mylist(list):
     pass
    
    l = mylist()
    l.foo = 'bar'