Pythonのクラスメソッドと通常のメソッドの違い

藏色散人
リリース: 2019-07-03 09:45:03
オリジナル
3849 人が閲覧しました

Pythonのクラスメソッドと通常のメソッドの違い

#Python クラス メソッドと通常のメソッドの違い

以下では、例を使用して違いを説明します。

最初に、2 つのメソッドを含むクラスを定義します。

class Apple(object):
        def get_apple(self, n):
                print "apple: %s,%s" % (self,n)
        @classmethod
        def get_class_apple(cls, n):
                print "apple: %s,%s" % (cls,n)
ログイン後にコピー

クラスの共通メソッド

クラスの共通メソッドは、次の方法で呼び出す必要があります。クラスのインスタンス。

a = Apple()
a.get_apple(2)
ログイン後にコピー

出力結果

apple: <__main__.Apple object at 0x7fa3a9202ed0>,2
ログイン後にコピー

バインディング関係を確認します:

print (a.get_apple)
<bound method Apple.get_apple of <__main__.Apple object at 0x7fa3a9202ed0>>
ログイン後にコピー

クラスの通常のメソッドは、クラスのインスタンスでのみ使用できます。クラスを使用して通常のメソッドを呼び出すと、次のエラーが発生します。

Apple.get_apple(2)
Traceback (most recent call last): File "static.py", line 22, in <module> Apple.get_apple(2) TypeError: unbound method get_apple() must be called with Apple instance as first argument (got int instance instead)
ログイン後にコピー

クラス メソッド

クラス メソッドとは、メソッドがクラスにバインドされていることを意味します。

a.get_class_apple(3)
Apple.get_class_apple(3)
apple: <class &#39;__main__.Apple&#39;>,3
apple: <class &#39;__main__.Apple&#39;>,3
ログイン後にコピー

バインディング関係をもう一度見てください:

print (a.get_class_apple) print (Apple.get_class_apple)
ログイン後にコピー

インスタンスを使用する場合とクラスを呼び出す場合、出力結果は同じです。

<bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>> <bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>>
ログイン後にコピー

関連する推奨事項:「

Python チュートリアル

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート