Python マジック メソッドとは
マジック メソッドはその名の通り魔法のようなもので、必要なときにいつでも何かを提供できます。 . あなたのアイデアを実現する方法。マジックメソッドとは、Python にあらかじめ組み込まれており、特定の操作を実行する際に自動的に呼び出される二重アンダースコアで囲まれたメソッドのことで、Python のオブジェクト指向の知恵の結晶です。初心者にとっては、Python の魔法のメソッドをマスターすることが特に重要になります。
Python マジック メソッドを使用する理由
Python のマジック メソッドを使用すると Python の自由度が高まり、書き換える必要がない場合にはマジック メソッドを使用することもできます。書き換えが必要な場合、ユーザーは自分のニーズに応じて一部のメソッドを書き換えて、自分の期待を満たすこともできます。 Python がオブジェクト指向言語であることはよく知られており、Python の基本的な魔法のメソッドにより、Python はオブジェクト指向に優れています。
#マジック メソッド名 |
説明 |
基本的なマジックの方法 (より一般的に使用される) |
|
__new__(cls[, ...]) | 1. オブジェクトのインスタンス化時に呼び出される最初のメソッド 2. そのパラメータは、処理のために __init__ メソッドに直接渡されます。 3.我们一般不会重写该方法 |
__init__(self[, ...]) | 构造方法,初始化类的时候被调用 |
__del__(self) | 析构方法,当实例化对象被彻底销毁时被调用(实例化对象的所有指针都被销毁时被调用) |
__call__(self[, args...]) | 允许一个类的实例像函数一样被调用:x(a, b) 调用 x.__call__(a, b) |
__len__(self) | 定义当被 len() 调用时的行为 |
__repr__(self) | 定义当被 repr() 调用时的行为 |
__str__(self) | 定义当被 str() 调用时的行为 |
__bytes__(self) | 定义当被 bytes() 调用时的行为 |
__hash__(self) | 定义当被 hash() 调用时的行为 |
__bool__(self) | 定义当被 bool() 调用时的行为,应该返回 True 或 False |
__format__(self, format_spec) | 定义当被 format() 调用时的行为 |
属性相关的方法 | |
__getattr__(self, name) | 定义当用户试图获取一个不存在的属性时的行为 |
__getattribute__(self, name) | 定义当该类的属性被访问时的行为 |
__setattr__(self, name, value) | 定义当一个属性被设置时的行为 |
__delattr__(self, name) | 定义当一个属性被删除时的行为 |
__dir__(self) | 定义当 dir() 被调用时的行为 |
__get__(self, instance, owner) | 定义当描述符的值被取得时的行为 |
__set__(self, instance, value) | 定义当描述符的值被改变时的行为 |
__delete__(self, instance) | 定义当描述符的值被删除时的行为 |
比较操作符 | |
__lt__(self, other) | 定义小于号的行为:x < y 调用 x.__lt__(y) |
__le__(self, other) | 定义小于等于号的行为:x <= y 调用 x.__le__(y) |
__eq__(self, other) | 定义等于号的行为:x == y 调用 x.__eq__(y) |
__ne__(self, other) | 定义不等号的行为:x != y 调用 x.__ne__(y) |
__gt__(self, other) | 定义大于号的行为:x > y 调用 x.__gt__(y) |
__ge__(self, other) | 定义大于等于号的行为:x >= y 调用 x.__ge__(y) |
算数运算符 | |
__add__(self, other) | 定义加法的行为:+ |
__sub__(self, other) | 定义减法的行为:- |
__mul__(self, other) | 定义乘法的行为:* |
__truediv__(self, other) | 定义真除法的行为:/ |
__floordiv__(self, other) | 定义整数除法的行为:// |
__mod__(self, other) | 定义取模算法的行为:% |
__divmod__(self, other) | 定义当被 divmod() 调用时的行为 |
__pow__(self, other[, modulo]) | 定义当被 power() 调用或 ** 运算时的行为 |
__lshift__(self, other) | 定义按位左移位的行为:<< |
__rshift__(self, other) | 定义按位右移位的行为:>> |
__and__(self, other) | 定义按位与操作的行为:& |
__xor__(self, other) | 定义按位异或操作的行为:^ |
__or__(self, other) | 定义按位或操作的行为:| |
反运算(类似于运算方法) | |
__radd__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rsub__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rmul__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rtruediv__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rfloordiv__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rmod__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rdivmod__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rpow__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rlshift__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rrshift__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__rxor__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
__ror__(self, other) | 当被运算对象(左边的操作对象)不支持该运算时被调用 |
增量赋值运算 | |
__iadd__(self, other) | 代入追加の動作を定義します: = |
__isub__(self 、other) | 代入減算の動作を定義します: -= |
代入乗算の動作を定義します: *= | |
代入真の除算の動作を定義します: /= | |
代入整数除算の動作を定義する: //= | |
代入モジュロ アルゴリズムの動作を定義する: %= | |
代入累乗の動作を定義します: **= | |
代入のビット単位の左シフトの動作を定義します: <<= | |
代入のビット単位の右シフトの動作を定義します: >>= | |
ビット単位の AND 演算の動作を定義します。代入の: &= | |
代入のビットごとの XOR 演算の動作を定義します: ^= | |
代入のビットごとの OR 演算の動作を定義します: |= | |
単項演算子 | |
正符号の動作を定義します: x | |
負の符号の動作を定義します: -x | |
abs() によって呼び出されたときの動作を定義します | |
ビットごとの反転の動作を定義します: ~x | |
型変換 | |
complex() によって呼び出されたときの動作を定義します (適切な値を返す必要があります) | |
int() によって呼び出されたときの動作を定義します (適切な値を返す必要があります) | |
float() によって呼び出されたときの動作を定義します (適切な値を返す必要があります) | |
定義round() によって呼び出されたときの動作 (適切な値を返す必要があります) | |
1. オブジェクトがスライス式の場合、整数強制を実装します |
2. スライス時に使用できるカスタム数値タイプを定義する場合は、__index__ を定義する必要があります。 3. __index__ が定義されている場合、 __int__ も定義する必要があり、同じ値を返します |
コンテキスト管理 (ステートメントを使用) | |
1. with ステートメントを使用する場合の初期化動作を定義します |
2. __enter__ の戻り値は、with ステートメントのターゲット、または as |
1 の後の名前にバインドされます。定義されている場合 コード ブロックが実行または終了した後にコンテキスト マネージャーが行うべきこと | 2. 通常、コード ブロックの実行後に例外の処理、作業のクリーンアップ、または日常的な作業を行うために使用されます。 |
コンテナ タイプ (一般)コンテナ クラスの操作に使用されます) | |
__len__(self) | len() によって呼び出されたときの動作を定義します (通常はコンテナ クラスの長さを返します) ) |
self[key] | # と同等、コンテナ内の指定された要素を取得する動作を定義します。 |
self[key] = value | と同等の、コンテナ内の指定された要素を設定する動作を定義します。 #__delitem__(self, key) |
__iter__(self) と同等です。 | |
__reversed__(self) | |
__contains__ (self, item) | |
以上がPython の魅力について詳しく学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。