Этот код изменяет адрес собственного объекта на начальный адрес объекта в функции инициализации с последующей инициализации объекта. Но это фактически создает новый адрес для созданного объекта. Я понимаю, что самообслуживание только во время выполнения функции инициализации. Мой вопрос: после того, как метод init завершает выполнение, он возвращает что-нибудь?
class A:
addr = None
def __init__(self):
if A.addr:
print("Current object address:",id(self))
print("First object address:",id(A.addr))
self = A.addr
print("Current object address after modification:",id(self))
else:
print("Initial address",id(self))
A.addr = self
>>> a = A()
Initial address 2433753170104
>>> b = A()
Current object address: 2433753170216
First object address: 2433753170104
Current object address after modification: 2433753170104
>>> id(a),id(b)
(2433753170104, 2433753170216)