我有一個抽象類ship
。更新從抽象類繼承的類
from abc import ABC, abstractmethod
class ship(ABC):
def __init__(self):
...
@abstractmethod
def do_stuff(self,stuff,things):
pass
我有多個類,繼承它(destroyer
,cruiser
,patrol_boat
,等...)
class carrier(ship):
def __init__(self):
....
def do_stuff(self,stuff,things):
....
目前,如果我要補充,讓我們說def do_more_stuff(self):
到ship
class ship(ABC):
def __init__(self):
...
@abstractmethod
def do_stuff(self,stuff,things):
pass
@abstractmethod
def do_more_stuff(self,stuff,things):
pass
的變化不會影響任何的子類,直到我重新輸入他們到控制檯。我該如何改變這一點?
你需要給足夠的代碼,以顯示你真正做([MVCE(https://stackoverflow.com/help/MCVE))。編輯超級_class_添加新方法應該可行(在定義子類之後這樣做效率不高,但不是不合理),但是我懷疑你錯誤地編輯了_instances,或者根本不編輯類。 – ShadowRanger
我覺得我正在重新定義'ship',而讓其餘的類繼承自'ship'的前一個定義。我怎樣才能將函數添加到'ship'而不用重新輸入整個塊? – David
對於重新定義整個類而不改變繼承的子類是正確的。我的答案涵蓋了這裏的細節;有一種方法適用於非抽象方法,但抽象方法不能使用這種技術。 – ShadowRanger