Почему объект не создается, когда метод вызывается во время создания объекта? - PullRequest
0 голосов
/ 22 марта 2020

Учитывая класс test, почему невозможно создать его экземпляр, вызвав один из его методов вместе с конструктором?

class test:
    def __init__(self, a):
        self.a = a

    def print_a(self):
        print(self.a)

Вот пример:

>>> obj = test("Hello").print_a()  # Prints the desired output.
Hello
>>> obj
>>> print(obj)  # But the object does not exist.
None
>>> obj = test("Hello")  # It obviously works when doing it separately. 
>>> obj
<__main__.test object at 0x7f537fea3940>
>>> obj.print_a()
Hello

Почему невозможно связать вызов метода с вызовом конструктора?

Это было реализовано в python3.

1 Ответ

1 голос
/ 22 марта 2020

Вы присваиваете obj возвращаемому значению функции print_a (которое равно None, поскольку не имеет возврата). Фактический тестовый объект никогда не сохранялся и, следовательно, больше не находится в области действия при попытке его печати. ​​

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