Вопрос о том, как вызвать функцию, определенную в классе в python - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь понять, как работают классы и self. Теперь у меня есть следующий код, в котором определены один класс и функции.

from typing import Dict, Any


class LearnClasses:
    def checks(self) -> Dict[str, Any]:
        return {
            **self.chk1(),
            **self.chk2(),
            **self.chk3(),
        }

    def chk1(self) -> Dict[str, Any]:

        chk_id = self.chk1.__name__

        return {
            f'{chk_id}': "Is"
        }

    def chk2(self) -> Dict[str, Any]:

        chk_id = self.chk1.__name__

        return {
            f'{chk_id}': "it"
        }

    def chk3(self) -> Dict[str, Any]:

        chk_id = self.chk3.__name__

        return {
            f'{chk_id}': "working?"
        }

Может ли кто-нибудь объяснить, как вызвать функцию checks в LearnClass?

Я пробовал LearnClasses.checks(), и это не сработало.

1 Ответ

1 голос
/ 07 мая 2020

В общем, чтобы вызвать обычные методы в классе, вам нужно создать экземпляр класса. Затем вы вызываете метод в экземпляре:

instance = LearnClasses()
instance.checks()

Обратите внимание, что код, который у вас сейчас есть, не имеет большого смысла. Обычная цель класса - хранить некоторые данные вместе с побочными методами, которые с ним работают. В вашем классе LearnClasses нет данных для хранения или работы, поэтому он не очень полезен.

Чуть более наглядный пример:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        return f"{self.name} is {self.age} years old"

Вы бы создали экземпляр, вызывая класс, который вызывает метод __init__ для хранения данных, которые у нас есть для человека. Метод info делает что-то полезное с этими данными, создавая строку:

joe = Person("Joe", 39)
print(joe.info())              # prints "Joe is 39 years old"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...