I run this code:
class My_class:
def __init__(self, Field = []):
self.Field = Field
def set_Field(self, Field):
self.Field = Field
def add_to_Field(self, number):
self.Field.append(number)
def get_Field(self):
return self.Field
Object_1 = My_class()
Object_1.Field.append(1)
print(Object_1.get_Field())
Object_2 = My_class()
print(Object_2.get_Field())
Object_1.set_Field([2])
print(Object_1.get_Field())
Object_3 = My_class()
print(Object_2.get_Field())
In output I get:
[1]
[1] # Why there is [1]?
[2]
[1]
I understand first print, but why with second and fourth I get [1]? When I create Object_2
with no input Field = []
from __init__
should work but it looks like it's not. Why append(1)
changes fields of all future classes while set_Field([2])
doesn't. Is that connected with mutable nature of lists?