Python:通过字符串中的名称访问结构字段
Posted
技术标签:
【中文标题】Python:通过字符串中的名称访问结构字段【英文标题】:Python: access structure field through its name in a string 【发布时间】:2013-04-10 05:59:55 【问题描述】:在 Scapy 中,我想比较任意两个数据包 a
和 b
之间的一些标头字段。这个字段列表是预定义的,比如:
fieldsToCompare = ['tos', 'id', 'len', 'proto'] #IP header
通常我会单独做:
if a[IP].tos == b[IP].tos:
... do stuff...
有没有办法从字符串列表中访问这些数据包字段,包括每个字符串的名称?喜欢:
for field in fieldsToCompare:
if a[IP].field == b[IP].field:
... do stuff...
【问题讨论】:
【参考方案1】:您可以使用getattr()
。这些行是等效的:
getattr(x, 'foobar')
x.foobar
setattr()
是它的对应物。
【讨论】:
【参考方案2】:我认为您正在寻找getattr()
。试试……
for field in fieldsToCompare:
if getattr(a[IP], field) == getattr(b[IP], field):
... do stuff...
【讨论】:
以上是关于Python:通过字符串中的名称访问结构字段的主要内容,如果未能解决你的问题,请参考以下文章