且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

实现 ABC 子类的正确方法

更新时间:2022-12-05 16:47:38

您可以将 BaseBacktestPortfolio 也作为抽象类.

You can make the BaseBacktestPortfolio also as Abstract class.

from abc import ABC, abstractmethod

class Portfolio(ABC):
    @abstractmethod
    def update_portfolio(self):
        pass

    @abstractmethod
    def update_from_fill(self):
        pass

    @abstractmethod
    def check_signal(self, signal_event):
        pass

class BaseBacktestPortfolio(Portfolio, ABC):

    def update_portfolio(self):
        print("updated portfolio")

    def update_from_fill(self):
        print("update from fill")

    @abstractmethod
    def check_signal(self):
        pass

class USBacktestPortfolio(BaseBacktestPortfolio):
    def check_signal(self):
        print("checked signal")

另请注意,您不需要在抽象方法中raise NotImplementedError.您只需pass.它更像 Pythonic :)

Also notice that you don't need raise NotImplementedError inside abstract method. You can just pass. Its more Pythonic :)