python - 如何制作python对象组合(列表对象中的列表对象)
问题描述
我有一些 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
这是实现这一目标的理想方式吗?
解决方案
组合意味着将对象的集合存储在另一个对象中。一个非常简单的例子:aBook
主要是Page
s 的列表,aPage
主要是Word
s 的列表。
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)
推荐阅读
- r - 如何计算两列之间的时间差?
- python - 如何在 PySimpleGUI 中一次将多个窗口全屏显示
- javascript - 多个可选捕获组的正则表达式模式
- spring-cloud-stream - Spring Cloud Stream中如何添加或调整文件供应商的配置
- python - 从标准数组中删除选定的值 - mongodb + python
- jbpm - 具有正确所有者的 JBPM 7.44 任务返回“无当前匹配”
- python - SQL Server rowversion 数据类型的 Python 字节到字符串
- r - R - 在空格后获取字符串
- javascript - 用户向下滚动到页面的一部分时显示弹出窗口
- python - python中的多个输入