2017-03-14 11 views
1

抽象メソッドを持つ抽象クラスを作成するときに可能性があるかどうかは、派生クラスのメソッドの実装で各関数のパラメータ量が異なることが可能であるかどうか疑問でした。さまざまな量のパラメータを持つ抽象クラス

私は現在、私の抽象クラスのための

from abc import ABCMeta, abstractmethod 

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

    @abstractmethod 
    def get(self): 
     pass 

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

は、これを可能とので、私はそれ

+0

は、それが行うには本当に奇妙なことです。抽象メソッドのセマンティクスには、ほとんどの場合、必要なパラメータが含まれています。この抽象メソッドまたは抽象クラスが実際に意味を成すかどうか再考したいかもしれません。 – user2357112

答えて

5

ませチェックが、具体的な実装が取る引数の数で行われやって行くだろうか場合です。だからあなたがこれをやっているのを止めるものは何もありません。

ちょうどあなたが同意する必要がありますどのようなパラメータを取るために、それらのメソッドを定義する:あなたは* *それを行うことができますが

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 
+0

ohkそれはちょうどあなたがありがとう私に教えてpycharmでpep8する必要があります – 1seanr