内部 class 与 namedtuple()
Inner class with namedtuple()
我正在尝试使用 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
内部的 class
import Zabbix
class Foo:
class Request(Zabbix.Request):
pass
def bar(self):
collections.namedtuple('Request',['b','c'])
有没有更好的方法?目前使用 python 3.4
您不能为类型指定名称 Zabbix.Request
,因为这是无效的语法(例如 class Zabbix.Request:
)。因此,您也无法使用该名称创建 namedtuple
。
您修改后的代码与第一个代码示例不同:您现在正在创建一个名称为 Request
的 namedtuple
。这是允许的,因为 Request
是类型的有效标识符。
我正在尝试使用 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
内部的 classimport Zabbix
class Foo:
class Request(Zabbix.Request):
pass
def bar(self):
collections.namedtuple('Request',['b','c'])
有没有更好的方法?目前使用 python 3.4
您不能为类型指定名称 Zabbix.Request
,因为这是无效的语法(例如 class Zabbix.Request:
)。因此,您也无法使用该名称创建 namedtuple
。
您修改后的代码与第一个代码示例不同:您现在正在创建一个名称为 Request
的 namedtuple
。这是允许的,因为 Request
是类型的有效标识符。