需要一种简单的方法来将元信息/类添加到python列表/元组变量吗? [英] need a simple way to add meta information/class to a python list/tuple variable?

查看:63
本文介绍了需要一种简单的方法来将元信息/类添加到python列表/元组变量吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

全部

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

I want simple meta information to be enclosed on an list object, see below code.

>>> 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__',
...

我的问题是

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

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

is there a simple way to attach meta info to list/tuple variable instead of overload 'setattr' or embedded that list into a dict?

谢谢!

推荐答案

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

The base types defined in C cannot have arbitrary attributes added; you must derive a Python type from them in order to change this.

>>> class MyList(list):
...   pass
... 
>>> m = MyList((1, 2, 3))
>>> len(m)
3
>>> m.foo = 42
>>> m.foo
42

这篇关于需要一种简单的方法来将元信息/类添加到python列表/元组变量吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆