Python のマジックメソッド は、二重アンダースコア「__」で始まり、終わるメソッドです。これらは Python の組み込みクラスによって定義され、演算子のオーバーロードによく使用されます。
それらはまた呼ばれます ダンダーメソッド、 ここでの Dunder は Double Under (アンダースコア) を意味します。
Python のマジックメソッド
組み込みクラスは多くのマジック メソッドを定義します。 あなた() 関数を使用すると、クラスによって継承されたマジック メソッドを表示できます。
例:
このコードは、継承されたマジック メソッドを表示します。 整数 クラス。
Python3
# code> print>(>dir>(>int>))> |
>
>出力
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>
または、cmd/terminal を試して Python のマジック関数のリストを取得し、cmd またはターミナルを開き、「python3」と入力して Python コンソールに移動し、次のように入力します。
>>> 言う(int)>>'出力:
Python のマジックメソッド
以下は、Python のマジック メソッドとその使用法のリストです。
初期化と構築
- __新しい__ : オブジェクトのインスタンス化で呼び出されます。
- __熱い__ : __new__ メソッドによって呼び出されます。
- __のうち__ : それはデストラクターです。
数値マジックメソッド
マックオペレーティングシステム
- __トランク__ (自己): math.trunc() の動作を実装します。
- __ceil__ (自己): math.ceil() の動作を実装します。
- __床__ (自己): math.floor() の動作を実装します。
- __ラウンド__ (自分、n): 組み込みのround()の動作を実装します。
- __invert__(自分自身): ~ 演算子を使用して反転の動作を実装します。
- __腹筋__(自分自身): 組み込みの abs() の動作を実装します。
- __neg__(自分): 否定の動作を実装します
- __pos__(自分): 単項正の動作を実装します
算術演算子
- __追加__ (自分、他人): math.trunc() の動作を実装します。
- __sub__(自分、他人): math.ceil() の動作を実装します。
- __私は持っている__ (自分、他人): math.floor() の動作を実装します。
- __フロアディビジョン__ (自分、他人): 組み込みのround()の動作を実装します。
- __div__(自分、他人): ~ 演算子を使用して反転の動作を実装します。
- __truediv__(自分、他人): 組み込みの abs() の動作を実装します。
- __mod__(自分、他人): 否定の動作を実装します
- __divmod__(自分、その他): 単項正の動作を実装します
- __捕虜__: ** 演算子を使用して指数の動作を実装します。
- __lshift__(自分、他人): << 演算子を使用して左ビットシフトを実装します。
- __rshift__(自分、他人): >> 演算子を使用して右ビット単位シフトを実装します。
- __and__(自分、他人): & 演算子を使用してビット単位で実装します。
- __or__(自分、他人): ビット単位または | を使用して実装します。オペレーター。
- __xor__(自分、他人): ^ 演算子を使用してビットごとの XOR を実装します。
文字列マジックメソッド
- __str__ (自己): クラスのインスタンスで str() が呼び出されたときの動作を定義します。
- __repr_ _(自分): T o 組み込みの int repr() メソッドによって呼び出され、型の機械可読表現を返します。
- __unicode__(自分自身): このメソッドは、ある型の Unicode 文字列を返します。
- __format__(self, formatstr): 新しいスタイルの文字列を返します。
- __ハッシュ_ _(自己): 整数を返す必要があり、その結果は辞書での簡単なキー比較に使用されます。
- __非ゼロ__(自分自身): クラスのインスタンスで bool() が呼び出されたときの動作を定義します。
- __あなた_ _(自己): このメソッドは、クラスの属性のリストを返します。
- __のサイズ__( 自己): オブジェクトのサイズを返します。
比較の魔法の方法
- __eq__ (自分、他人): 等価演算子 == の動作を定義します。
- __ne__(自分、他人): 不等号演算子 != の動作を定義します。
- __lt__ (自分、他人): 小なり演算子 < の動作を定義します。
- __gt__ (自分、他人): 大なり演算子> の動作を定義します。
- __le__(自分、他人): 小なり等しい演算子 <= の動作を定義します。
- __げ__ (自分、他人): 以上演算子>= の動作を定義します。
Python の Dunder メソッドまたは Magic メソッド
Python のマジック メソッドのいくつかを例とともに見てみましょう。
1. __init__ メソッド
の __init__ メソッド 初期化は、C++、Java、C#、PHP などの他の特定のプログラミング言語のコンストラクターと同様に、クラスのインスタンスが作成されるときに、呼び出しなしで呼び出されます。
これらのメソッドのおかげで、明示的な型キャストを行わずに「+」演算子を使用して 2 つの文字列を追加できるようになります。
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
Javaオブジェクトからのjson
>出力
>
2. __repr__ メソッド
__repr__ Python のメソッドは、オブジェクトが文字列として表示される方法を定義します。
以下のコード スニペットは、文字列オブジェクトのメモリ アドレスのみを出力します。オブジェクトを表す __repr__ メソッドを追加しましょう。
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
>
>出力
Object: Hello>
それに文字列を追加しようとすると、次のようになります。
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' world'>)> |
>
>
出力:
TypeError : unsupported operand type(s) for +: 'String' and 'str'>
3. __add__ メソッド
__add__ メソッド Python では、クラスのオブジェクトがどのように追加されるかを定義します。オーバーロードされた加算演算子とも呼ばれます。
次に、 __add__ メソッドを String クラスに追加します。
パイソン
JavaのUML図
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > >def> __add__(>self>, other):> >return> self>.string>+> other> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' Geeks'>)> |
>
>出力
Hello Geeks>
Python のマジック メソッドまたはダンダー メソッドのいくつかについて説明しました。 Python のマジック メソッドは、クラス内のさまざまな機能に使用できます。
この記事から Python のマジック メソッドについて学び、プロジェクトで使用していただければ幸いです。
