はじめに
現在Pythonのレベルが使える段階にあるため、私が普段Pythonを使って書いているスクリプトは比較的単純で、少し大きめのプロジェクトを書いたことはありません。 Python のクラス、クラス間の組織的な関係、プロジェクト全体でクラスがどのように結合されているかについての理解がまだ不足しています。他の人が書いた Python コードを読んで、エンジニアリングにおける Python の応用を学び、技術レベルを向上させたいと考えています。選択した Python コードは、Python クローラー コード、github アドレスです。このコードは、私の快適ゾーンから外れたコードのレベルをちょうど満たしているため、私の現在のレベルで学習するのに非常に適しています。
Python 2.4 以降、デコレータは主に静的メソッドとクラス メソッドを実装するために使用されます。
デコレーターは @ 演算子を使用します。例は次のとおりです。
class Example: val1 = "Value 1" def __init__(self): self.val2 = "Value 2" @staticmethod def staticmd(): print("静态方法,无法访问Value1和Value2") @classmethod def classmd(cls): print('类方法,类:'+str(cls)+",val1:"+cls.val1+",无法访问val2的值") example = Example() example.staticmd() #实例调用静态方法,无法访问实例变量val1和val2 example.classmd() #实例调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:Value 1,无法访问val2的值 Example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:Value 1,无法访问val2的值 example.val1 = "The instance value1 changed" example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:Value 1,无法访问val2的值 Example.val1 = "The class value2 changed" example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:The class value2 changed,无法访问val2的值 Example.classmd() #类调用类方法,输出结果:类方法,类:<class '__main__.Example'>,val1:The class value2 changed,无法访问val2的值
上記の例から、静的メソッドとクラスメソッドの違いが明確に区別できると思います。
1 つ目は構文の違いです。
静的メソッドは self パラメーターを渡す必要はありませんが、クラス メンバーのメソッドはこのクラスを表す cls パラメーターを渡す必要があります。
静的メソッドはインスタンスにアクセスできます。変数とクラス変数 はい、クラス メンバー メソッドはインスタンス変数にアクセスできませんが、クラス変数にはアクセスできます
使用上の違い:
静的メソッドはクラス属性にアクセスできないため、インスタンス属性は比較的独立したメソッドと同等です。階級関係のようなものはありません。このように、静的メソッドはクラスのスコープ内の単なる関数です。
Python の静的メソッドとクラス メンバーに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。