29

次のような名前付きタプルを作成します。

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

4 に答える 4

34

__name__クラスの属性を取得できます。

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

(ここでは、type()組み込みを使用してクラスを取得します)。

于 2012-06-07T20:59:54.633 に答える
25

namedtuple属性のトピックについて:

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

知っておくと便利な場合があります

于 2017-03-29T00:48:56.947 に答える
2

Pythonのドキュメントに基づいて、 namedtuple「eggs」という名前の新しいタプルサブクラスを提供します

つまり、基本的にクラス名が必要です

クラス名を教えてtype(ham).__name__くれます

于 2012-06-07T21:02:53.967 に答える
1
>>> ham.__class__.__name__
'eggs'
于 2012-06-07T21:00:23.310 に答える