I'm starting to develop some code in python (have some experience with C and C++) and I'm having trouble understanding how to pass a particular type to the constructor of another class. Considering the example:
class baseClass(object):
def __init__(self,x,y):
self.x = x
self.y = y
class myClass(object):
def __init__(self, otherClass,size):
self.myMember = [otherClass] * size
def addMemberInstance(self,otherClass):
self.myMember.append(otherClass)
def setOtherClassX(self,pos,x):
self.myMember[pos].x = x
def getOtherClassX(self,pos):
return self.myMember[pos].x
def printMemberXs(self):
print("----")
for m in self.myMember:
print(m.x)
print("----")
# populate myClass myMember list with 10 instances of baseClass
foo = myClass(baseClass(5,6),10)
foo.printMemberXs()
# change atribute of myMember entry at pos 3 with val 16
foo.setOtherClassX(3,16)
foo.printMemberXs() # apparently all entries in the list are changed
# append a new entry to myMember with a new instance of baseClass
foo.addMemberInstance(baseClass(3,7))
foo.printMemberXs()
# change atribute of new myMember entry (at pos 10) with val 47
foo.setOtherClassX(10,47)
foo.printMemberXs() #only the last entry was changed!
The reason I'm attempting this is that I will have several classes that will be derived from baseClass
, and would like to pass the type/constructor/instance to the myClass
constructor. I am particularly confused as to the difference between creating a list of predefined size or just appending each entry individually?