Какого типа данные возвращаются в этом коде? Если это экземпляр, то как мы можем получить значение, используя это возвращаемое значение? - PullRequest
0 голосов
/ 17 апреля 2020

Код:

class A:
    class B:

        def __init__(self,value):
            self.value=value
    def get(self,value):
        return self.B(value)

a=A()
print(a.get(5))

Вывод:

<__main__.A.B object at 0x7f39df4dc5d0>

Какой тип данных возвращаемых данных. Это адрес указателя или сам экземпляр? и как мы получаем экземпляр (я хочу значение), используя этот возвращенный вывод?

Любая помощь оценивается

1 Ответ

0 голосов
/ 17 апреля 2020

Когда вы вызываете a.get(5), вы вызываете конструктор класса B внутри указанного c экземпляра A и возвращаете только что созданный экземпляр B.

Мы можем проверить это довольно просто:

>>> type(a.get(5))
<class '__main__.A.B'>

Однако каждый раз, когда мы вызываем вышеуказанный код, мы не получаем один и тот же экземпляр B:

>>> a.get(5) == a.get(5)
False

Мы даем То же входное значение для конструктора, но поскольку они являются двумя отдельно созданными экземплярами, они не равняются друг другу.

Однако мы можем получить значение нового экземпляра, просто вызвав атрибут value:

>>> a.get(5).value
5

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

>>> a.get(5).value == a.get(5).value
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...