2017-01-25 1 views
0

Так что это было заблуждение меня в течение нескольких дней в настоящее время, у меня есть три класса один называется Page:Проблема создания объектов класса в рамках метода другого класса, и добавить их в списки Python

class Page: 

    def __init__(self, pageName, sectionIBelongTo="Uncategorised"): 
     self.mySection = sectionIBelongTo 
     #each page belongs to only one section 
     self.name = pageName 

Какие должен иметь назначенный раздел объекта:

class Section: 

    childPages = [] 

    def __init__(self, padName): 
     self.name = padName 

    def addSection(self, pageObject): 
     self.childPages.append(pageObject) 

Раздел также содержит список всех дочерних заметок. Это все управляется через единый Book объекта класса:

class Book: 
    Sections = [] 

    def __init__(self): 
     print "notebook created" 

    def addSection(self, secName): 
     sectionToAdd = Section(secName) 

     self.Sections.append(sectionToAdd) 

    def addPage(self, bufferPath, pageName, pageSection="Uncategorised"): 
     #Create a page and add it to the appropriate section 


     for section in self.Sections: 
      if section.name == pageSection: 
       sectionToSet = section 
     #Search list of sections for matching name. 

     newPage = Page(pageName, sectionToSet) 
     #Create new page and assign it the appropriate section object 

     self.Sections[self.Sections.index(sectionToSet)].addSection(newPage) 
     #Add page to respective section's list of pages. 

Который, как вы можете видеть, содержит список всех его разделов. Так что я импортировать эти классы из другого файла и попытаться заполнить мою книгу так:

myBook = Book() 

myBook.addSection("Uncategorised") 
myBook.addSection("Test") 
myBook.addSection("Empty") 
#Create three sections 

myBook.addPage("belongs to uncategorised") 
#Add page with no section parameter (uncategorised). 
myBook.addPage("Belongs to test", "Test") 
#Add page to section "Test" 
myBook.addPage("Belongs to uncategorised again") 
#Another uncategorised page 

for x in range(0, 3): 
    print "Populated section '", myBook.Sections[x].name, "', with: ", len(myBook.Sections[x].childPages), " child pages." 

Выходные данные показывают, что все три секции создаются в порядке, но каждая секция имеет 3 дочерних страниц, если напечатать имена страниц, которые появляются, что каждая страница была добавлена ​​в каждый раздел.

Я бы очень признателен всем, кто может обнаружить мою глупую ошибку.

Заранее благодарен! :)

ответ

1

Создание childPages атрибут экземпляра, а не атрибут класса, должен решить проблему:

class Section: 

    def __init__(self, padName): 
     self.name = padName 
     self.childPages = [] 

    def addSection(self, pageObject): 
     self.childPages.append(pageObject) 
+0

Вы сэр замечательны, решил, ты звезда спасибо! –

Смежные вопросы