Я начинаю разрабатывать некоторый код на python (имею некоторый опыт работы с C и C ++), и у меня возникают проблемы с пониманием того, как передать конкретный тип конструктору другого класса.Рассмотрим пример:
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!
Причина, по которой я пытаюсь это сделать, заключается в том, что у меня будет несколько классов, которые будут производными от baseClass
, и я хотел бы передать тип / конструктор / экземпляр в myClass
конструктор.Меня особенно смущает разница между созданием списка предварительно определенного размера или простым добавлением каждой записи по отдельности?