带有namedtuple()的内部类

时间:2015-02-25 22:22:46

标签: python python-3.x data-conversion

我正在尝试使用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

1 个答案:

答案 0 :(得分:5)

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

您修改后的代码与第一个代码示例不同:您现在正在创建一个名为namedtuple的{​​{1}}。这是允许的,因为Request将是类型的有效标识符。