ozg*_*ral 6 python oop class python-3.x
我有以下简化方案:
class NetworkAnalyzer(object):
def __init__(self):
print('is _score_funct implemented?')
@staticmethod
def _score_funct(network):
raise NotImplementedError
class LS(NetworkAnalyzer):
@staticmethod
def _score_funct(network):
return network
Run Code Online (Sandbox Code Playgroud)
我正在寻找应该使用什么来print('is _score_funct implemented?')确定子类是否已经实现_score_funct(network)。
注意:如果有一种更Pythonic/传统的方式来构造代码,我也将不胜感激。我这样定义它的原因是,一些 NetworkAnalyzer 子类在其定义中具有 _score_funct ,而那些没有它的子类将具有不同的变量初始化,尽管它们将具有相同的结构
使用抽象基类,除非它实现了所有抽象方法,否则您将无法实例化该类:
import abc
class NetworkAnalyzerInterface(abc.ABC):
@staticmethod
@abc.abstractmethod
def _score_funct(network):
pass
class NetworkAnalyzer(NetworkAnalyzerInterface):
def __init__(self):
pass
class LS(NetworkAnalyzer):
@staticmethod
def _score_funct(network):
return network
class Bad(NetworkAnalyzer):
pass
ls = LS() # Ok
b = Bad() # raises TypeError: Can't instantiate abstract class Bad with abstract methods _score_funct
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2752 次 |
| 最近记录: |