ホームページ  >  記事  >  バックエンド開発  >  Python の魅力について詳しく学ぶ

Python の魅力について詳しく学ぶ

青灯夜游
青灯夜游オリジナル
2019-11-26 17:58:333152ブラウズ

Python の魅力について詳しく学ぶ

Python マジック メソッドとは

マジック メソッドはその名の通り魔法のようなもので、必要なときにいつでも何かを提供できます。 . あなたのアイデアを実現する方法。マジックメソッドとは、Python にあらかじめ組み込まれており、特定の操作を実行する際に自動的に呼び出される二重アンダースコアで囲まれたメソッドのことで、Python のオブジェクト指向の知恵の結晶です。初心者にとっては、Python の魔法のメソッドをマスターすることが特に重要になります。

Python マジック メソッドを使用する理由

Python のマジック メソッドを使用すると Python の自由度が高まり、書き換える必要がない場合にはマジック メソッドを使用することもできます。書き換えが必要な場合、ユーザーは自分のニーズに応じて一部のメソッドを書き換えて、自分の期待を満たすこともできます。 Python がオブジェクト指向言語であることはよく知られており、Python の基本的な魔法のメソッドにより、Python はオブジェクト指向に優れています。

##__imul__(self, other)代入乗算の動作を定義します: *= #__itruediv__(self, other)代入真の除算の動作を定義します: /=__ifloordiv__(self, other) other)代入整数除算の動作を定義する: //=__imod__(self, other)代入モジュロ アルゴリズムの動作を定義する: %=__ipow__(self, other[, modulo])代入累乗の動作を定義します: **=__ilshift__ (self, other)代入のビット単位の左シフトの動作を定義します: <<=__irshift__(self, other) 代入のビット単位の右シフトの動作を定義します: >>=__iand__(self, other)ビット単位の AND 演算の動作を定義します。代入の: &= __ixor__(self, other)代入のビットごとの XOR 演算の動作を定義します: ^=# #__ior__( self, other)__neg__(self)__pos__ (self)__abs__(self)invert__(self)ビットごとの反転の動作を定義します: ~x__complex__(self)complex() によって呼び出されたときの動作を定義します (適切な値を返す必要があります)__int__(self)int() によって呼び出されたときの動作を定義します (適切な値を返す必要があります) __float__(self) float() によって呼び出されたときの動作を定義します (適切な値を返す必要があります) __round__(self[, n])定義round() によって呼び出されたときの動作 (適切な値を返す必要があります) __index__(self)1. オブジェクトがスライス式の場合、整数強制を実装します__enter__(self)1. with ステートメントを使用する場合の初期化動作を定義します__exit__(self, exc_type, exc_value,traceback)1 の後の名前にバインドされます。定義されている場合 コード ブロックが実行または終了した後にコンテキスト マネージャーが行うべきこと ##getitem__(self, key)self[key]# と同等、コンテナ内の指定された要素を取得する動作を定義します。 ##__setitem__(self, key, value) と同等の、コンテナ内の指定された要素を設定する動作を定義します。 #__delitem__(self, key) は、コンテナ内の指定された要素を削除する動作を定義します。これは、del self[key]__iter__(self) と同等です。 コンテナを反復するときの要素の動作を定義します。__reversed__(self)reversed() によって呼び出されたときの動作を定義します__contains__ (self, item)メンバー テスト演算子を使用するときの動作を定義します (in または not in)推奨される学習: 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) 代入減算の動作を定義します: -=
代入のビットごとの OR 演算の動作を定義します: |=
単項演算子
正符号の動作を定義します: x
負の符号の動作を定義します: -x
abs() によって呼び出されたときの動作を定義します
型変換
2. スライス時に使用できるカスタム数値タイプを定義する場合は、__index__
を定義する必要があります。 3. __index__ が定義されている場合、 __int__ も定義する必要があり、同じ値を返します
コンテキスト管理 (ステートメントを使用)
2. __enter__ の戻り値は、with ステートメントのターゲット、または as
2. 通常、コード ブロックの実行後に例外の処理、作業のクリーンアップ、または日常的な作業を行うために使用されます。
コンテナ タイプ (一般)コンテナ クラスの操作に使用されます)
__len__(self) len() によって呼び出されたときの動作を定義します (通常はコンテナ クラスの長さを返します) )
self[key] = value

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

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