1 回答

TA貢獻1804條經驗 獲得超2個贊
Square您可以通過將基類中使用的類作為SquareCollection集合類的屬性來實現此目的,這樣子類也可以顯式覆蓋它,而不是進行硬編碼:
# Module_A
class Square:
pass # implement stuff here
class SquareCollection
BaseItem = Square # the "class that is collected here"
def __init__(self, dim_list):
# spawn BaseItem instances here, which are Square by default,
# but might be set to something else in a subclass
self.element = [self.BaseItem(val) for val in dim_list]
# Module_B1
import Module_A as ma
class Square(ma.Square):
pass
class SquareCollection(ma.SquareCollection):
# override the collection's BaseItem with this module's Square class,
# but keep the rest of the SquareCollection code the same
BaseItem = Square
添加回答
舉報