Проблемы с self в классе

Что такое self в данном случаем? Ведь self это ссылка на экземпляр класса, то есть, например, a = Test() self ссылается на a, мы можем передать аргументы a и посмотреть их с помощью dict. А тут что происходит?

class Test():
  def __init__(self):
    self.t = "test"

print(Test())
print(Test().__dict__)

Я предположил, что класс создает какой-то "невидимый" для нас экземпляр и записывает туда аргументы. И с каждым новым вызовом класса создаются разные экземпляры.

print(Test()) # <__main__.Test object at 0x7ff9b57c0630>
print(Test().__dict__) # {'t': 'test'}
print(Test()) # <__main__.Test object at 0x7ff9b57c04a8>
print(Test().__dict__) # {'t': 'test'}

Но видимо нет. Ибо если добавить третий вызов.

print(Test()) # <__main__.Test object at 0x7f0976f064a8>
print(Test().__dict__) #{'t': 'test'}
print(Test()) # <__main__.Test object at 0x7f0976f064a8>
print(Test().__dict__) # {'t': 'test'}
print(Test()) # <__main__.Test object at 0x7f0976f064a8>
print(Test().__dict__) # {'t': 'test'}

Происходит вот такая странная ситуация. Так что же тут происходит, черт возьми?


Ответы (0 шт):