Python3 вызывает функцию прямо из имени класса. Вспомогательная функция? Функция Stati c? Или неявный экземпляр объекта - PullRequest
0 голосов
/ 04 марта 2020

Я ищу следующий python3 код:

class MyClass(MyAbstractClass):
      :
    def my_fun1(self, input1):
         :
        return result

Тогда в другой части кодов MyClass используется как:

output = MyClass().my_fun1(input1)

Мне интересно, MyClass().my_fun1(input1) инстанцировать объект MyClass неявно? Или MyClass () здесь рассматривается как класс служебной функции? Если это служебная функция, зачем ее помещать в класс? Или это класс c? но если my_fun1 не помечено как функция c stati?

Извините, я пришел из C ++ / Java фона, так что это немного странно для меня ...

Большое спасибо!

1 Ответ

0 голосов
/ 04 марта 2020

Вызов MyClass().my_fun1(input1) сначала создает объект MyClass (поскольку MyClass() вызывает конструктор), а затем вызывает функцию my_fun1. В Python нет класса stati c, но у нас есть метод stati c и метод класса. Вы можете найти много хороших ссылок для этих понятий, таких как ЗДЕСЬ и ЗДЕСЬ .

Если вы определите метод stati c в MyClass, вам понадобится чтобы вызвать его следующим образом:

output = MyClass.my_static_method(input1)

Обратите внимание, что после MyClass нет (), то есть вы не создаете объект (экземпляр).

...