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 для получения дополнительной информации).