Python: добавление элементов в список класса

У меня есть класс, который выглядит так

class Someclass(something):
    name = "SomeClass"
    field=[XShortField("Field", 0x1000)]

Этот класс используется другой функцией, но перед его использованием я хотел бы добавить элементы в поле, например

if option == 0: #nothing is added
   pass 
elif option == 1: #one element is added
   SomeClass.field.append(XShortField("Field"+str(option), 0x2000))
elif option == 2: #two elements are added
#and so on

Но, похоже, я так не могу. Есть ли особый способ доступа к атрибутам классов?

1 ответ

Решение

Вы можете использовать подкласс здесь:

class Someclass1(Someclass):
    field = Someclass.field + [XShortField("Field"+str(option), 0x2000]

s_class = Someclass
if option == 0: #nothing is added
    pass
elif option == 1: #one element is added
    s_class = Someclass1
elif option == 2: #two elements are added
    [...]
    #and so on

Это зависит от вашего контекста, но, например, если вы пишете диссектор для Scapy, это, вероятно, хороший способ сделать это;-)

В конкретном случае протоколов Scapy вы можете взглянуть на ConditionalField() это может быть хорошим решением вашей проблемы (см. исходный код Scapy для получения дополнительной информации).

Другие вопросы по тегам