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.
精彩评论