具有不同数量参数的摘要 类

Abstract classes with varying amounts of parameters

我想知道在使用抽象方法创建抽象 class 时是否可能允许派生 classes 中的这些方法的实现对每个方法具有不同数量的参数功能。

我目前有我的摘要class

from abc import ABCMeta, abstractmethod

class View(metaclass=ABCMeta):
    @abstractmethod
    def set(self):
        pass

    @abstractmethod
    def get(self):
        pass

但我希望能够在一个 class 中实现它,其中设置有 1 个参数并获得 2 个参数 (set(param1)get(param1, param2)), 然后在另一个 class 中也继承了它,但是 set 有 0 个参数,get 有 2 个参数 (set()get(param1, param2))。

这可能吗?如果可以,我会怎么做

不检查具体实现采用多少参数。所以已经没有什么能阻止你这样做了。

只需定义那些方法来获取您需要接受的任何参数:

class View(metaclass=ABCMeta):
    @abstractmethod
    def set(self):
        pass

    @abstractmethod
    def get(self):
        pass


class ConcreteView1(View):
    def set(self, param1):
        # implemenation

    def get(self, param1, param2):
        # implemenation


class ConcreteView2(View):
    def set(self):
        # implemenation

    def get(self, param1, param2):
        # implemenation

python 3.8

from abc import ABC, abstractmethod


class SomeAbstractClass(ABC):
    @abstractmethod
    def get(self, *args, **kwargs):
        """
        Returns smth
        """

    @abstractmethod
    def set(self, key, value):
        """
        Sets smth
        """

class Implementation(SomeAbstractClass):
    def set(self, key, value):
        pass

    def get(self, some_var, another_one):
        pass

完美运行,没有警告,没有问题