2017-03-14 2 views
1

Ich frage mich, ob es möglich ist, wenn eine abstrakte Klasse mit abstrakten Methoden erstellen, wenn die Implementierungen dieser Methoden in den abgeleiteten Klassen verschiedene Mengen von Parametern für jede Funktion haben können.Abstrakte Klassen mit unterschiedlichen Mengen an Parametern

Im Moment habe ich für meine abstrakte Klasse

from abc import ABCMeta, abstractmethod 

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

    @abstractmethod 
    def get(self): 
     pass 

Aber ich mag in der Lage sein, es mit einem Satz mit 1 Parameter in einer Klasse zu implementieren und erhalten mit 2 (set(param1) und get(param1, param2)), und dann in eine andere Klasse erbt es auch, hat aber 0 Parameter für set und 2 für get (set() und get(param1, param2)).

Ist das möglich und wenn ja, wie würde ich mich über sie

+0

Während Sie * kann * das tun, das ist eine wirklich seltsame Sache zu tun. Die Semantik einer abstrakten Methode enthält fast immer die Parameter, die sie annehmen sollte. Vielleicht möchten Sie noch einmal überdenken, ob diese abstrakte Methode oder abstrakte Klasse tatsächlich Sinn ergibt. – user2357112

Antwort

5

keine Kontrollen durchgeführt, wie viele Argumente konkrete Implementierungen nehmen zu tun. Es gibt also nichts, was dich davon abhält, dies bereits zu tun.

Gerade diese Methoden definieren zu ergreifen, Parameter, die Sie akzeptieren müssen:

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 es muss einfach pep8 in pycharm sein und mir dann sagen danke – 1seanr

Verwandte Themen