我有一个看起来像这样的课程
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
但似乎我不能那样做。有没有一种特殊的方法来访问类属性?
答案 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)。