gpt4 book ai didi

python - 在 Python 中调用函数之前检查函数是否引发 NotImplementedError

转载 作者:太空狗 更新时间:2023-10-30 02:53:21 24 4
gpt4 key购买 nike

我有以下简化方案:

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

关于python - 在 Python 中调用函数之前检查函数是否引发 NotImplementedError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49903165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com