[英]Python - Inheritance of a composition class
我有2個班級。 而且我需要擴展兩者的功能,因此我需要利用這些基類的繼承。 可能嗎?
class Book:
def __init__(self):
self.sheets = generate_sheets()
author = ''
def generate_sheets(self):
for index in range(20):
(some_extra code)
self.sheets.append(Sheet(index))
class Sheet:
def __init__(self, idx):
self.id = idx
我想創建基礎的2個子級,並且構圖在它們之間。 只會覆蓋方法generate_sheets嗎?
class DefinitionBook(Book):
def __init__(self):
super().__init__()
translator = ''
def generate_sheets(self):
super().__init__()
for index in range(20):
self.sheets.append(DefSheet(index)
class DefSheet(Sheet):
def __init__
super().__init__()
definition = dict()
還是可以將方法generate_sheets的部分代碼保留在Book的子類中,而僅將其中調用的部分更改為Sheet / DefSheet類?
您可以將需要使用的Sheet
類(和子類)作為Book
(和子類)類中的類變量; 這樣就不需要重寫子類中的generate_sheets
。
class Sheet:
def __init__(self, idx):
self.id = idx
def __str__(self):
return f"{self.__class__.__name__}"
class Book:
sheet = Sheet
def __init__(self):
self.sheets = []
self.generate_sheets()
def generate_sheets(self):
for index in range(20):
self.sheets.append(self.__class__.sheet(index))
def __str__(self):
return f"{self.__class__.__name__} - {self.sheet.__name__}"
class DefSheet(Sheet):
def __init__(self, idx):
super().__init__(idx)
class DefinitionBook(Book):
sheet = DefSheet
def __init__(self):
super().__init__()
b = Book()
print(b, b.sheets[0])
d = DefinitionBook()
print(d, d.sheets[0])
Book - Sheet Sheet
DefinitionBook - DefSheet DefSheet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.