我遇到了一个python问题.我想用来type()找出我正在使用的变量类型.代码看起来与此类似:
class Foo():
array=[ myField(23),myField(42),myField("foo"), myField("bar")]
def returnArr(self):
for i in self.array:
print type(i)
if __name__ == "__main__":
a=Foo()
a.returnArr()
Run Code Online (Sandbox Code Playgroud)
编辑:myField()是我定义的类.
当我要求type()时,我得到: <type 'instance'>现在根据1,这是因为我使用了一个类元素并要求type()它.现在,我需要的是:<type 'int'>对于例如:myField(42)与<type 'str'>对myField(foo).我怎么能实现这一点?
编辑:
def __init__(self, name, default, fmt="H"):
self.name = name
if fmt[0] in "@=<>!":
self.fmt = fmt
else:
self.fmt = "!"+fmt
self.default = self.any2i(None,default)
self.sz = struct.calcsize(self.fmt)
self.owners = []
Run Code Online (Sandbox Code Playgroud)
代码取自scapy,我尝试调整它.
我正在用scapy建造一层.该图层具有ConditionalFields:
class Foo(Packet):
name = "Foo"
fields_desc = [
ConditionalField(BitField("bar1", None, 4),
lambda pkt: pkt.bar1 is not None),
ConditionalField(BitField("bar2", None, 4),
lambda pkt: pkt.bar2 is not None),
ByteField("bar3", 0x0),
ByteField("bar4", 0x0)
]
Run Code Online (Sandbox Code Playgroud)
现在我如何检查bar1是否已设置?RESP.BAR2?我写的lambda函数对我来说似乎是正确的,并且根据文档它以这种方式使用,但它不起作用.你知道我怎么解决这个问题吗?我们的想法是,如果bar1和bar2我实例化类Foo设置,它应该出现在包,否则不行.我不想只针对那种情况做2包.