Staticmethod静的メソッドとクラスメソッドクラスメソッド
まず、クラスメソッドクラスメソッド
- クラスのメソッドになり、この方法は、直接クラスを呼び出すために使用することができる方法、オブジェクトのいずれかに依存している、すなわち、いくつかの変更をインスタンス化する必要はありません必要はないにしてもよいです
- この操作方法は、唯一の静的プロパティを伴う場合には、クラスメソッドを飾るために、このメソッドを使用する必要があります
クラスの製品: __discount = 0.8 #静的プライベート属性は、 DEF __init__を:(セルフ、名前、価格) self.name = 名前の 自己。__price =価格 #の価格民営 @Property #、クラスの外価格属性装っ法、ダイレクトコール機能一部の操作は、専用の属性を行っ DEF価格(セルフ): #パラメータは渡さない 返す。自己を__price *製品。__discount @classmethod #道をクラスメソッドに、この方法はではなく、外側のクラスベース上で直接呼び出すことができます私たちは、インスタンス化することはできません任意のオブジェクトに依存する必要が DEFの change_discount(CLS、NEW_DISCOUNT): #は割引を変更します CLS。__discount = NEW_DISCOUNT Appleは製品(= ' りんご'、5) #1 の例 印刷(apple.price) Goods.change_discount( 0.5) #ここでは、直接商品のカテゴリを呼び出すために使用することができる、あなたはリンゴに頼る呼び出す必要はありません 印刷(りんご。価格)
結果:
4.0 2.5
第二に、静的メソッドstaticmetho
- 完全なオブジェクト指向プログラミングでは、関係は、オブジェクトとクラスの両方の関数ではなく、また、この機能staticmethodは静的メソッドになります使用し、その後、関係ない場合
クラスログイン: DEF __init__ (セルフ、名、パスワード): self.name = 名前 self.pwd = パスワード DEFログイン(セルフ):パスは @staticmethod DEF(get_usr_pwd): #ここでは、特定のパラメータパラメータを渡しすることはできませんが、いくつかの一般的なパラメータ #は、元々のメソッドとクラスとオブジェクトは何の関係もない機能が、今のクラスの静的メソッドである USR = INPUT(「ユーザー名:」) PWD = INPUT(「パスワード:」) ログイン(USR、PWD ) Login.get_usr_pwd() #は、静的メソッド呼び出しに直接クラスを使用します
IIIの概要
- 、関連する操作を行うことができますクラスメソッドをインスタンス化することはできませんし、静的メソッドは、クラスによって直接呼び出され
- オブジェクトは、クラスメソッドと静的メソッド(クラスへのポインタ)を呼び出しますが、一般的に呼び出して、クラス名を使用することをお勧めすることができます
- クラスメソッドは、クラスを代表して、デフォルトのパラメータCLSを持っています
- 静的メソッドは、関数のように、パラメータはデフォルトはありません