如何从python中的命名元组获取名称?

时间:2012-06-07 20:57:45

标签: python

我创建了一个这样的命名元组:

from collections import namedtuple
spam = namedtuple('eggs', 'x, y, z')
ham = spam(1,2,3)

然后我可以使用例如

来访问火腿的元素
>>> ham.x
1
>>> ham.z
3

在翻译中,

>>> ham
eggs(x=1, y=2, z=3)

但是,如果我只想得到'鸡蛋'怎么办?我能想到的唯一方法是

>>> ham.__repr__.split('(')[0]
'eggs'

但这看起来有点乱。有更清洁的方法吗?

如果不使用私有方法无法访问它,为什么命名元组会有这种“蛋”方面?

4 个答案:

答案 0 :(得分:26)

您可以获取该类的__name__属性:

>>> type(ham).__name__
'eggs'

(这里使用the type() builtin来获取课程。)

答案 1 :(得分:9)

关于namedtuple属性的主题:

 >>> ham._fields
    ('x', 'y', 'z')
知道

有时很有用

答案 2 :(得分:2)

>>> ham.__class__.__name__
'eggs'

答案 3 :(得分:1)

基于python的docnamedtuple为您提供了一个名为'eggs'的新元组子类

基本上你需要类名

type(ham).__name__将为您提供班级名称