Возвращаемое значение при вызове экземпляра Python - PullRequest
0 голосов
/ 09 ноября 2018

Мне было интересно, как добиться такого поведения.

Когда вы вызываете переменную в python, она напрямую отображает некоторое значение.

как:

>> a= 5
>> a
5

библиотеки типа numpy также делают это

>> a = np.array([1,2])
>> a
>> array([1,2])

Случается что-то подобное, верно? Поэтому я хочу подражать этому поведению для создания класса

class example(object):
   def __init__(self,intputs):
       self.out = inputs
...
instance = example(inputs)

такой, что когда я пишу

instance

это было прямо эквивалентно

instance.out

Потому что самая похожая вещь, которую я знаю, это установка call , чтобы сделать это, но в этом случае она будет вызывать instance () с этими скобками

1 Ответ

0 голосов
/ 09 ноября 2018

Я не совсем уверен, почему вы хотите это сделать. Правильный способ обработки распечатки значения экземпляра класса - предоставить для вашего класса метод __str__ или __repr__ (в зависимости от того, что именно вы хотите видеть), вызвать этот метод и распечатать результат. В большинстве случаев достаточно простого вызова __str__:

class example(object):
    def __init__(self,intputs):
        # your init code here

    def __str__(self):
        # construct a string for the class value and return it
        return str(self.some_value)

Затем вы должны сделать что-то вроде следующего, чтобы получить строковое представление в вашем коде:

instance = example(some_value)
print(str(instance))

Вот полезная статья и соответствующий вопрос SO о разнице между __str__ и __repr__.

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