2016-12-08 4 views
-1

Вы можете вызвать статические методы Python либо из самого класса, либо из экземпляра класса. Лучше другого?В Python предпочтительнее вызывать статические методы, используя класс или экземпляр?

Например:

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 

Тестирование с timeit не предполагает (заметного) разницу во времени.

+0

Убедитесь, что ваш код выполнен. –

ответ

1

Это зависит от того, что вы хотите сделать. Если вы используете имя класса, поведение функции, использующей этот вызов, не может быть изменено при наследовании классов. Если вы используете self, классы, которые наследуют этот и переопределяют статический метод, смогут изменять поведение функции.

+0

Истинно, и, конечно же, что-то, что сделало бы один выбор другого. Но для многих (наиболее?) Случаев использования это просто не будет актуальным. – Bubz0

 Смежные вопросы

  • Нет связанных вопросов^_^