我正在尝试使用collections.namedtuple
将字典转换为python对象。
import Zabbix
class Foo:
def bar(self):
collections.namedtuple('Zabbix.Request',['b','c'])
导致
ValueError: Type names and field names must be valid identifiers: 'Zabbix.Request'
我的简单修复是在Foo
中扩展内部类import Zabbix
class Foo:
class Request(Zabbix.Request):
pass
def bar(self):
collections.namedtuple('Request',['b','c'])
有更好的方法吗?目前正在使用python 3.4
答案 0 :(得分:5)
您不能为类型指定名称Zabbix.Request
,因为这是无效的语法(例如class Zabbix.Request:
)。因此,您也无法使用该名称创建namedtuple
。
您修改后的代码与第一个代码示例不同:您现在正在创建一个名为namedtuple
的{{1}}。这是允许的,因为Request
将是类型的有效标识符。