ホームページ  >  記事  >  バックエンド開発  >  Pythonのクラスメソッドとインスタンスメソッドの違い

Pythonのクラスメソッドとインスタンスメソッドの違い

(*-*)浩
(*-*)浩オリジナル
2019-06-29 09:27:066766ブラウズ

Python でより一般的なメソッド タイプは、インスタンス メソッドとクラス メソッドです。それらはどのように定義されていますか?なんと呼びますか?それらの違いと機能は何ですか?以下を参照してください。

Pythonのクラスメソッドとインスタンスメソッドの違い

#まず、これらのメソッドをクラス内に定義します。まず、定義と呼び出し方法について簡単に説明します。 (追記: インスタンス オブジェクトには最も大きな権限があります。)

インスタンス メソッド (推奨学習: Python ビデオ チュートリアル)

定義: 最初のパラメーター Itパラメータ名は通常「self」であることが合意されており、これを通じてインスタンスの属性とメソッドを渡すことができます (クラスの属性とメソッドも渡すことができます);

Call: インスタンス オブジェクトによってのみ呼び出すことができます。

クラス メソッド

定義: デコレータ @classmethod を使用します。最初のパラメータは現在のクラス オブジェクトである必要があります。パラメータ名は通常 "cls" であることが合意されており、これを通じてクラスの属性とメソッドが渡されます (インスタンスの属性とメソッドは渡せません)。 ##Call: インスタンス オブジェクトとクラス オブジェクトを呼び出すことができます。

インスタンス メソッド

要するに、インスタンス メソッドは、クラスのインスタンスによって使用できるメソッドです。ここではあまり説明がありません。

クラス メソッド

デコレータ @classmethod を使用します。

原則として、クラスメソッドはクラス自体をオブジェクトとして操作するメソッドです。メソッドがあり、クラス自体をオブジェクトとして使用してこのメ​​ソッドを呼び出す方が論理的に合理的であると仮定すると、このメソッドはクラス メソッドとして定義できます。また、継承が必要な場合はクラスメソッドとして定義することもできます。

学生クラスとクラス クラスがあるとします。実現したい機能は次のとおりです:

クラス サイズを増やす操作を実行し、クラス メンバーの総数を取得します。

Students クラスはクラス class を継承します。生徒がインスタンス化されるたびに、クラス内の生徒の数が増加する可能性があります。

最後に、いくつかの生徒を定義し、生徒の総数を取得したいと思います。クラスの人々。

class ClassTest(object):
    __num = 0

    @classmethod
    def addNum(cls):
        cls.__num += 1

    @classmethod
    def getNum(cls):
        return cls.__num

    # 这里我用到魔术方法__new__,主要是为了在创建实例的时候调用累加方法。
    def __new__(self):
        ClassTest.addNum()
        return super(ClassTest, self).__new__(self)


class Student(ClassTest):
    def __init__(self):
        self.name = ''

a = Student()
b = Student()
print(ClassTest.getNum())

Python 関連の技術記事をさらに詳しく知りたい場合は、

Python チュートリアル

列にアクセスして学習してください。

以上がPythonのクラスメソッドとインスタンスメソッドの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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