ホームページ >バックエンド開発 >Python チュートリアル >Python の名前付きタプル: それらはどのような型ですか?

Python の名前付きタプル: それらはどのような型ですか?

DDD
DDDオリジナル
2024-11-23 05:31:24828ブラウズ

Named Tuples in Python: what type are they?

Python の名前付きタプルは、組み込みタプル データ型の拡張機能であり、タプルの要素に意味のある名前を付けることができます。言い換えれば、名前付きタプルは名前付き属性を持つタプルです。素敵じゃないですか?

これらはコレクション モジュールの一部であり、シンプルで不変の クラスをより簡単な方法で定義する方法を提供します。

ちょっと待って、授業?
はい、授業です。

名前付きタプルは本質的に不変クラスです。

これは魔法のような現象です。namedtuple を使用して名前付きタプルを作成すると、結果はタプル自体のインスタンスではなく、タプルを継承して動的に生成されたクラスになります。またまたカッコイイ!!

これがどのように機能するかを見てみましょう。

from collections import namedtuple 

P = namedtuple("Point", "x y")

P =namedtuple("Point", "x y") を実行すると、Point という名前の新しいクラス (namedtuple の最初の引数で指定されたとおり) が作成されます。

namedtuple 関数は、バックグラウンドで型を使用して、タプルを継承する Point という名前の新しいクラスを動的に作成します。この新しいクラスは変数 P.

に保存されます。

クラスと同様に、型は type です。

> type(P)
class 'type'
> class A:
    pass

> type(A)
class 'type'

名前付きタプルのインスタンスはどのような型ですか?

from collections import namedtuple 

P = namedtuple("Point", "x y")
p = P(1,2)

> print(type(p)) 
class '__main__.Point'

p は Point 型のインスタンスです。しかし、これはタプルでもあります:

> print(isinstance(p, tuple))
True

要約:

  • P は、namedtuple によって動的に生成されたクラスです。
  • P のインスタンスは、サブクラス化される Point 型のオブジェクトです タプル。

そして最後にもう 1 つ:

名前付きタプル変数 (P と呼ばれるもの) に、動的に作成されたクラスである型名 (Point と呼ばれるもの) と同じ名前を付けるのが非常に一般的です。

from collections import namedtuple 

Point = namedtuple("Point", "x y")

この 2 つの違いを明確にするために、別の名前を使用しました。

以上がPython の名前付きタプル: それらはどのような型ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。