ホームページ >バックエンド開発 >Python チュートリアル >Python の組み込み型をカスタム メソッドで拡張するにはどうすればよいですか?
カスタム メソッドによる組み込み Python 型の拡張
Python では、dict や str などの組み込み型は不変であり、直接メソッドの追加は許可されません。ただし、組み込み型をサブクラス化し、グローバル名前空間で置き換えることによって、同様の機能を実現することは可能です。
たとえば、dict 型に helloWorld() メソッドを追加するとします。これは直接変更では実現できませんが、dict をサブクラス化し、そのサブクラス内でメソッドを定義できます。
class MyDict(dict): def helloWorld(self): print("Hello world!")
このサブクラスを今後のすべての辞書に適用するには、組み込みの名前空間で元の dict 型を置き換えます。 :
import __builtin__ __builtin__.dict = MyDict
作成された辞書はすべて MyDict タイプになり、helloWorld() メソッドを持ちます:
my_dict = {} my_dict.helloWorld() # Prints "Hello world!"
ただし、オブジェクトはリテラル構文 (例: {}) はバニラの dict 型のままであり、カスタム メソッドはありません:
vanilla_dict = {} vanilla_dict.helloWorld() # AttributeError: 'dict' object has no attribute 'helloWorld'
このアプローチは、カスタム メソッドを使用して組み込み型を拡張する方法を提供しますが、制限がないわけではありません。 。たとえば、リテラル構文オブジェクトはバニラのままであり、サブクラスは親の型に追加されたカスタム属性やメソッドを継承しません。
以上がPython の組み込み型をカスタム メソッドで拡張するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。