ホームページ > バックエンド開発 > Python チュートリアル > Python の静的メソッドとクラス メンバー

Python の静的メソッドとクラス メンバー

高洛峰
リリース: 2017-03-01 11:56:38
オリジナル
1526 人が閲覧しました

はじめに

現在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 &#39;__main__.Example&#39;>,val1:Value 1,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:Value 1,无法访问val2的值
example.val1 = "The instance value1 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:Value 1,无法访问val2的值
Example.val1 = "The class value2 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:The class value2 changed,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;__main__.Example&#39;>,val1:The class value2 changed,无法访问val2的值
ログイン後にコピー

上記の例から、静的メソッドとクラスメソッドの違いが明確に区別できると思います。

1 つ目は構文の違いです。

  • 静的メソッドは self パラメーターを渡す必要はありませんが、クラス メンバーのメソッドはこのクラスを表す cls パラメーターを渡す必要があります。

  • 静的メソッドはインスタンスにアクセスできます。変数とクラス変数 はい、クラス メンバー メソッドはインスタンス変数にアクセスできませんが、クラス変数にはアクセスできます

使用上の違い:

静的メソッドはクラス属性にアクセスできないため、インスタンス属性は比較的独立したメソッドと同等です。階級関係のようなものはありません。このように、静的メソッドはクラスのスコープ内の単なる関数です。

Python の静的メソッドとクラス メンバーに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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