Добавление полей с переменным именем в классы Python - PullRequest
5 голосов
/ 05 мая 2010

У меня есть класс python, и мне нужно добавить в него произвольное количество произвольно длинных списков. Названия списков, которые мне нужно добавить, также произвольны. Например, в PHP я бы сделал это:

class MyClass {

}

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

Как мне это сделать в Python?

Мне также интересно, разумно ли это делать. Альтернативой может быть создание списка списков в классе, но так как количество и размер списков являются произвольными, я опасался, что это может привести к снижению производительности.

Если вам интересно, чего я пытаюсь достичь, я пишу сверхлегкий интерпретатор сценариев. Интерпретатор просматривает список, написанный человеком, и создает некий байт-код. Байт-код каждой функции будет сохранен в виде списка, названного в честь функции в классе «app». Мне любопытно услышать любые другие предложения о том, как это сделать.

Ответы [ 2 ]

5 голосов
/ 05 мая 2010

Использование setattr.

>>> class A(object):
...     pass
... 
>>> a = A()
>>> f = 'field'
>>> setattr(a, f, 42)
>>> a.field
42
1 голос
/ 05 мая 2010

Я бы написал это самым простым способом, а затем профиль, а затем попытался оптимизировать конкретные элементы.

Давайте вспомним принцип KISS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...