logo

Python のダンダーまたはマジック メソッド

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 のマジックメソッド

以下は、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 のマジック メソッドについて学び、プロジェクトで使用していただければ幸いです。