Можно ли сделать экземпляр класса вызываемым - PullRequest
0 голосов
/ 28 июня 2018

Я хочу вызвать экземпляр класса напрямую,

для примера-

class A(Object):
    def __init(self,temp):
        super(A, self).__init__()
        self.val = temp

    def get_val(self):
        return self.val

Теперь создаем экземпляр -

my_var = A('something')
print(my_var.get_val())

но я хочу напечатать значение только с помощью -

print(my_var) or print(my_var())

Возможно ли это?

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете переопределить метод __str__(). Когда вы печатаете ссылку на объект напрямую, она внутренне вызывает obj.__str__(). Следовательно, вы можете достичь того, что вы хотите, переопределив указанный метод.

class A():
    def __init__(self,temp):
        self.val = temp

    def get_val(self):
        return self.val


    def __str__(self):
        return self.get_val()


my_var = A('something')
print my_var

ВЫВОД:

something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...