[英]Match All Methods between two Python Sub-Modules
我有一个具有以下层次结构的自定义模块:
module
__init__.py
kernel1
__init__.py
alg1.py
alg2.py
kernel2
__init__.py
alg1.py
alg2.py
这里, kernel1
和kernel2
应该实现完全相同的一系列算法,但使用不同的底层库。
我想知道是否有一种方法可以确保 kernel1 中定义的每个方法在kernel1
中都有对应kernel2
,反之亦然。 例如,如果在kernel1
中定义了一个函数f_kernel1
( alg1.py
或alg2.py
),它应该在kernel2
中定义一个函数f_kernel2
( alg1.py
或alg2.py
)
许多可能的解决方案之一是将kernel1
和kernel2
定义为包含函数(或实现的函数的包装器)的类,并从公共抽象基类继承。
这样基类为通用函数定义了一个空实现,每个派生类都需要实现它们(这在几个python IDE中强制执行)
抽象类可以用abc
模块定义。
例如:
from abc import ABC, abstractmethod
class KernelBase(ABC):
@abstractmethod
def func1(self):
pass
class Kernel1(KernelBase):
def func1(self):
...
class Kernel1(KernelBase):
def func2(self):
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.