У меня вопрос, почему данный код работает так как он работает?
class B:
prop = ''
class A:
__data = []
def set(self, b: B):
self.__data.append(b)
def display(self):
for data in self.__data:
print(data.prop)
print('------------------')
obj_one = A()
obj_two = A()
b_one = B()
b_two = B()
b_one.prop = 'one'
b_two.prop = 'two'
obj_one.set(b_one)
obj_two.set(b_two)
print(obj_one)
print(obj_two)
obj_one.display()
obj_two.display()
<__main__.A object at 0x7f867822bf70>
<__main__.A object at 0x7f867822be80>
one
two
------------------
one
two
------------------
Почему я создаю два
разных экземпляра класса но свойство __data у них в друг почему то
общие?
Это как вообще? - как сделать что бы свойства класса были изолированы друг от друга в данном примере?
Я конечно знаю что есть объекты которые передаются по ссылке, но почему тут это происходит не понимаю?
Я ожидал получить результат:
<__main__.A object at 0x7f867822bf70>
<__main__.A object at 0x7f867822be80>
one
------------------
two
------------------