Python:将元素添加到类的列表中

时间:2015-05-19 08:11:07

标签: python list class attributes

我有一个看起来像这样的课程

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 个答案:

答案 0 :(得分:0)

您可能希望在此处使用子类:

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 source code)。