繁体   English   中英

匹配两个 Python 子模块之间的所有方法

[英]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

这里, kernel1kernel2应该实现完全相同的一系列算法,但使用不同的底层库。

我想知道是否有一种方法可以确保 kernel1 中定义的每个方法在kernel1中都有对应kernel2 ,反之亦然。 例如,如果在kernel1中定义了一个函数f_kernel1alg1.pyalg2.py ),它应该在kernel2中定义一个函数f_kernel2alg1.pyalg2.py

许多可能的解决方案之一是将kernel1kernel2定义为包含函数(或实现的函数的包装器)的类,并从公共抽象基类继承。

这样基类为通用函数定义了一个空实现,每个派生类都需要实现它们(这在几个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM