[英]How to override static abstract method of base in a subclass?
我有一个带有调用其他抽象函数的静态函数的抽象类。 但是当我创建一个新类并覆盖抽象函数时,原始(抽象)函数仍在运行。
我写了一个类似于我的问题的例子。 请帮忙。 在以下示例中,我想从Main
而不是Base
运行do_something()
。
from abc import ABC, abstractmethod
class Base(ABC):
@staticmethod
@abstractmethod
def do_something():
print('Base')
@staticmethod
def print_something():
Base.do_something()
class Main(Base):
@staticmethod
def do_something():
print('Main')
Main.print_something()
输出:
Base
Main.print_something
不存在,所以它解析为Base.print_something
,它显式调用Base.do_something
,而不是Main.do_something
。 您可能希望print_something
成为类方法。
class Base(ABC):
@staticmethod
@abstractmethod
def do_something():
print('Base')
@classmethod
def print_something(cls):
cls.do_something()
class Main(Base):
@staticmethod
def do_something():
print('Main')
Main.print_something()
现在,当Main.print_something
解析为Base.print_something
,它仍将接收Main
(而不是Base
)作为其参数,允许它根据需要调用Main.do_something
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.