When an object is used to create another object from a different class, it seems that arrays passed on as parameters are actually shared between both classes. Integers don't exhibit this sort of behaviour. I don't know how to explain it further, hopefully the code will speak for itself. Is this behaviour intended, and if it is, how is it possible to make the arrays separate?
class foo:
def __init__(self, array, integer):
self.list = array
self.list[0] = self.list[0] + 1
self.number = integer
self.number = self.number + 1
print('list: ' + str(self.list[0]))
print('number: ' + str(self.number))
class bar:
def __init__(self):
self.objects = []
self.defaultarray = [1]
self.defaultnumber = 1
for i in range(0,3):
print('default list: ' + str(self.defaultarray))
self.objects.append(foo(self.defaultarray, self.defaultnumber))
item = bar()
#expected result:
#default list: [1]
#list: 2, number: 2
#default list: [1]
#list: 2, number: 2
#default list: [1]
#list: 2, number: 2
#actual result:
#default list: [1]
#list: 2, number: 2
#default list: [2]
#list: 3, number: 2
#default list: [3]
#list: 4, number: 2