ホームページ >バックエンド開発 >Python チュートリアル >既存の Python オブジェクトにメソッドを追加するにはどうすればよいですか?

既存の Python オブジェクトにメソッドを追加するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-17 14:51:15972ブラウズ

How Can I Add Methods to Existing Python Objects?

Python での既存のオブジェクト インスタンスへのメソッドの追加

Python では、通常、既存のオブジェクトにメソッドを追加することは推奨されません (つまり、クラス定義)。ただし、必要な場合には例外がいくつかあります。

バインドされたメソッドと関数

Python では、メソッドはオブジェクト インスタンスにバインドされることで関数と区別されます。 。メソッドが呼び出されるとき、インスタンスは最初の引数として自動的に渡されます。

一方、関数は特定のインスタンスにバインドされず、適切な引数を使用して明示的に呼び出す必要があります。

クラス属性の変更

クラスのすべてのインスタンスにメソッドを追加したい場合は、次のようにすることができます。クラス定義を変更するだけです:

class A:
    def bar(self):
        print("bar")

a = A()
a.bar()  # Output: "bar"

個々のインスタンスの変更

ただし、クラスの特定のインスタンスにメソッドを追加する必要がある場合、状況は少し複雑になります。もっと複雑です。関数はバインドされないため、インスタンス属性に直接割り当てることはできません。

def barFighters():
    print("barFighters")

a.barFighters = barFighters
a.barFighters()  # TypeError: barFighters() takes exactly 1 argument

MethodType を使用した関数のバインド

関数を適切にバインドするにはオブジェクト インスタンスに対して、types モジュールの MethodType 関数を使用できます。

import types

a.barFighters = types.MethodType(barFighters, a)
a.barFighters()  # Output: "barFighters"

このメソッド バインディングにより、関数は呼び出されたときにインスタンスを最初の引数として呼び出されます。

以上が既存の Python オブジェクトにメソッドを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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