2016-12-08 8 views
-1

Pythonの静的メソッドは、クラス自体からでも、クラスのインスタンスからでも呼び出すことができます。他のものよりも優れていますか?例えばPythonでは、クラスまたはインスタンスを使用して静的メソッドを呼び出すことをお勧めしますか?

timeit

class Arthur(object): 

    @staticmethod 
    def wages(): 
     return 1 

    def __init__(self, b): 
     bank_balance = b 

    def im_rich1(self): 
     money = self.bank_balance + sum([self.wages()] for i in range(0,365)) 
     return money 

    def im_rich2(self): 
     money = self.bank_balance + sum([Arthur.wages()] for i in range(0,365)) 
     return money 

テストには(目立つ)の時間差を示唆していません。

+0

コードが実行可能であることを確認してください。 –

答えて

1

あなたのやりたいことによって異なります。クラス名を使用する場合、この呼び出しを使用する関数の動作は、継承するクラスでは変更できません。代わりにselfを使用すると、このクラスを継承して静的メソッドをオーバーライドするクラスは、関数の動作を変更することができます。

+0

真実であり、確かに、一方が他方を選択するようなものです。しかし、多くの(ほとんどの?)ユースケースでは、これは関連性がないだけです。 – Bubz0

関連する問題