开发者

Adding variably named fields to Python classes

I have a python class, and I need to add an arbitrary n开发者_开发知识库umber of arbitrarily long lists to it. The names of the lists I need to add are also arbitrary. For example, in PHP, I would do this:

class MyClass {

}

$c = new MyClass();
$n = "hello"
$c.$n = array(1, 2, 3);

How do I do this in Python?

I'm also wondering if this is a reasonable thing to do. The alternative would be to create a dict of lists in the class, but since the number and size of the lists is arbitrary, I was worried there might be a performance hit from this.

If you are wondering what I'm trying to accomplish, I'm writing a super-lightweight script interpreter. The interpreter walks through a human-written list and creates some kind of byte-code. The byte-code of each function will be stored as a list named after the function in an "app" class. I'm curious to hear any other suggestions on how to do this as well.


Use setattr.

>>> class A(object):
...     pass
... 
>>> a = A()
>>> f = 'field'
>>> setattr(a, f, 42)
>>> a.field
42


I would write it the simplest way for now, and profile next, and then look to optimize specific elements.

Let's remember the KISS principle.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜