Python学習の旅

巴扎黑
巴扎黑オリジナル
2017-06-23 15:53:481222ブラウズ

この章では、著者は Python データ モデル、主に Python のいくつかの特別なメソッドを簡単に紹介します。たとえば、__len__、__getitem__ などです。トランプ プログラムを使用して、これらのメソッドを説明します

まず、タプルとネームタプルの違いを紹介します:

ネームタプルはタプルに似たデータ型です。インデックスを使用してデータにアクセスできることに加えて、便利なプロパティ名を使用したデータへのアクセスもサポートします。

従来のタプルアクセスは以下の通りです。各要素へのアクセスはインデックスを介して検索する必要があります。この発見の方法は非常に直感的ではありません

rreeeはnametupleを使用して構築します。 .py"、17 行目、

t1.age+=1

AttributeError: 属性を設定できません

この本のトランプの例を見てみましょう。コードは次のとおりです。 :

tup1=(,,)
tup1[1]
tup2=namedtuple(,[,,])
t1=tup2(,,)
t1
t1.age
t1.height
t1.name

まず、カードタプル Card が定義され、rank はカード番号を表し、suit はカードのスートを表します。次に、FrenchDeck はまずランクとスーツの具体的な意味を定義します。 __init__ で self._cards を初期化します。

__len__はself._cardsの長さをフィードバックします。 __getitem__ は特定のカード値を返します。

結果は次のようになります。カードの長さは 52 で、deck[1] は Card(rank='3',suit='spades') です

実際に len(deck) であることがわかります。 __len__ メソッドを呼び出します。 Deck[1] は __getitem__ を呼び出します。

得到结果如下,namedtupel中tuple2是类型名,name,age,height是属性名字
从上面的访问可以看到,直接用t1.age的方法访问更加直观。当然也可以用索引比如t1[0]的方法来访问
結果を取得します:

Card(rank='9', suit='hearts')

ベクトル演算に関する別の例を見てみましょう。たとえば、ベクトル 1 Vector1(1,2) とベクトル 2 Vector2(3,4) があります。この場合、vector1+vector2 の結果は (4,6) になるはずです。 Vector1 と Vector2 は両方ともベクトルですが、操作を実装するにはどうすればよいですか?メソッドは __add__、__mul__

コードは次のとおりです:

t t1:
    t
和元组一样,namedtupel中的元素也是不可变更的。如果执行t1.age+=1。将会提示无法设置元素

演算結果は次のとおりです:

ここで、__add__、__mul__、__abs__ はそれぞれベクトル加算、乗算、および剰余演算を実装します。

__repr__ メソッドについて言及する価値があります。このメソッドは、オブジェクトを印刷する必要があるときに呼び出されます。たとえば、vector(1,2) を出力すると、vector(1,2) が得られます。それ以外の場合、それはオブジェクトを表す文字列です: __repr__ と __str__ の関数は似ています

りー

以上がPython学習の旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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