как сделать python композиций объектов (список объектов в списке объектов) - PullRequest
0 голосов
/ 15 января 2020

У меня есть 3 слоя, которые соединены родителем - потомком - дочерним как композиции. Где дочерний элемент зависит от верхнего родительского элемента (и уничтожается при уничтожении родительского элемента). Как книга, которая имеет несколько страниц, в которой есть несколько слов. Как мне смоделировать это правильно? Я хочу создать их изнутри наружу, и лучше всего добавить 2 дочерних объекта в виде списка к соответствующему родительскому объекту.

class Book:    
    def __init__(self, bookName):
        self.bookName = bookName
        self.listOfPageObjects = []


class Page(Book):
    pageBackColor = "white"

    def __init__(self, bookName, numberOfWords, pageNumber):
        super().__init__(bookName)
        self.numberOfWords = numberOfWords
        self.pageNumber = pageNumber
        self.listOfWordObjects = []


class Word(Page):
    wordFont = "courier"
    wordMaxLen = 100

    def __init__(self, bookName, numberOfWords, pageNumber, actualWord):
        super().__init__(bookName, numberOfWords, pageNumber)
        self.actualWord = actualWord

Это был бы идеальный способ сделать это?

1 Ответ

2 голосов
/ 15 января 2020

Композиция означает хранение коллекции объектов внутри другого объекта. Очень простой пример: Book - это прежде всего список Page с, а Page - это, прежде всего, список Word с.

class Book:
    def __init__(self, name, pages):
        self.book_name = name
        self.pages = pages

class Page:
    def __init__(self, number, words):
        self.number = number
        self.words = words

class Word:
    def __init__(self, word, font="Courier"):
        self.word = word
        self.font = font

pages = [Page(1, [Word("Call"), Word("me"), Word("Ishmael"), ...]),
         Page(2, [...])],
         ...
        ]

b = Book("Moby Dick", pages)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...