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
我正在寻找应该使用什么来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
| 归档时间: | 
 | 
| 查看次数: | 2752 次 | 
| 最近记录: |