带有namedtuple()的内部类

Bre*_*zen 4 python data-conversion python-3.x

我试图用collections.namedtuple字典转换为python对象.

import Zabbix

class Foo:

  def bar(self):
    collections.namedtuple('Zabbix.Request',['b','c'])
Run Code Online (Sandbox Code Playgroud)

这导致了

ValueError: Type names and field names must be valid identifiers: 'Zabbix.Request'
Run Code Online (Sandbox Code Playgroud)

我的简单修复就是扩展Foo中的内部类

import Zabbix

class Foo:

  class Request(Zabbix.Request):
    pass

  def bar(self):
    collections.namedtuple('Request',['b','c'])
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?目前正在使用python 3.4

Sim*_*ser 5

您不能为类型指定名称,Zabbix.Request因为这是无效的语法(例如,class Zabbix.Request:).因此,您也无法namedtuple使用该名称创建.

修改后的代码并不等同于第一个代码示例:你现在创建一个namedtupleRequest姓名.这是允许的,因为它是Request类型的有效标识符.