0

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?

0 Answers0