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

我创建一个命名元组,如下所示:

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

然后我就可以用。

1
2
3
4
>>> ham.x
1
>>> ham.z
3

在翻译,

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

但如果我只想要"鸡蛋"呢?我唯一能想到的就是

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

但这看起来有点乱。有更干净的方法吗?

如果不使用私有方法就不能访问命名元组,那么为什么命名元组有这个"eggs"方面呢?


你可以得到类的__name__属性:

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

(这里使用type()内置函数获取类)。


关于namedtuple属性的主题:

1
2
 >>> ham._fields
    ('x', 'y', 'z')

有时候知道这些有用吗


1
2
>>> ham.__class__.__name__
'eggs'


基于python的doc, namedtuple提供了一个名为"eggs"的新元组子类

本质上,你需要类名

type(ham).__name__将给您类名