web-dev-qa-db-ja.com

パラメータの量が異なる抽象クラス

抽象メソッドを使用して抽象クラスを作成するときに、派生クラスでのこれらのメソッドの実装で、関数ごとに異なる量のパラメーターを持つことができるかどうか、私は考えていました。

私は現在、抽象クラスのために持っています

_from abc import ABCMeta, abstractmethod

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

    @abstractmethod
    def get(self):
        pass
_

しかし、私はそれを1つのパラメータを持つセットで1つのクラスに実装して2(set(param1)get(param1, param2))を取得できるようにしたいのですが、別のクラスでもそれを継承しますが0 setのパラメーターとgetの2(set()get(param1, param2))。

これは可能ですか、それができるとしたらどうすればいいですか

13
1seanr

具体的な実装が取る引数の数に関するチェックは行われません。だから、あなたがこれをやめることをすでに止めるものは何もありません。

これらのメソッドを定義して、受け入れる必要があるすべてのパラメーターを取得します。

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
17
Martijn Pieters