Python の組み込み型をカスタム メソッドで拡張するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-24 19:27:02
オリジナル
972 人が閲覧しました

How Can You Extend Python's Built-in Types with Custom Methods?

カスタム メソッドによる組み込み 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!