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

aar*_*ren 24 python

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

from collections import namedtuple
spam = namedtuple('eggs', 'x, y, z')
ham = spam(1,2,3)
Run Code Online (Sandbox Code Playgroud)

然后我可以用例如火腿访问元素

>>> ham.x
1
>>> ham.z
3
Run Code Online (Sandbox Code Playgroud)

在翻译中,

>>> ham
eggs(x=1, y=2, z=3)
Run Code Online (Sandbox Code Playgroud)

但是,如果我只想得到"蛋"呢?我能想到的唯一方法是

>>> ham.__repr__.split('(')[0]
'eggs'
Run Code Online (Sandbox Code Playgroud)

但这似乎有点凌乱.这样做有更清洁的方法吗?

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

Gar*_*tty 28

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

>>> type(ham).__name__
'eggs'
Run Code Online (Sandbox Code Playgroud)

(这里使用type()内置拿到类).

  • @aaren 这不是私有方法 - 双下划线双方表明该方法 - 或者,在这种情况下,属性对于 Python 的工作方式是特殊的。给 ham 对象命名是没有意义的,因为它不是 ham 对象的一部分。这是课堂的一部分。任何属于类范围的东西都存储在类中,这是有道理的。需要类的名称 - 因为您没有使用 `class` 语句,您必须明确地将名称提供给 python。 (2认同)

kno*_*ark 11

关于namedtuple属性的主题:

 >>> ham._fields
    ('x', 'y', 'z')
Run Code Online (Sandbox Code Playgroud)

知道有时很有用

  • 这根本不是问题的答案 (2认同)