Kraft ist eine Funktion der parameter Typ in Python?

Habe ich eine Funktion in eine Python-Klasse, die fügt über Schnittstellen zu einer Liste.

def RegisterAsListener(self, inListener):
    self.__TransitListeners.append(inListener)

Das ist schön, denn eine Klasse muss nur Erben, sagte mein Interface, greifen Sie das Objekt, und registrieren Sie sich für alle updates.

class ITransit():
    def TransitUpdate(self, data):
        raise NotImplementedError("You must define this function.")

(vorausgesetzt, ich machte eine Schnittstelle korrekt)

Da bin ich nicht der einzige auf diesem Projekt, die ich nicht wollen, dass jemand den Aufruf der RegisterAsListener Funktion mit einem falschen Datentyp. Ich konnte im code zu überprüfen, den Typ innerhalb der Funktion register, aber es wäre einfacher, wenn der compiler nur geschrien an die Programmierer, wenn Sie versuchen, zu schieben, in einen falschen Datentyp.

def RegisterAsListener(self, IListener inListener):
    self.__TransitListeners.append(inListener)

Gibt es eine Möglichkeit, dies zu tun?

  • if the compiler just yelled at the programmer ... welchen compiler?
  • Verwenden Sie die abc Modul zu definieren, was ein Objekt implementieren sollten, statt.
  • Ansonsten, Python ist eine dynamisch typisierte Sprache ist, ist es nicht erzwingen-Objekt-Typen für Sie.
InformationsquelleAutor MintyAnt | 2013-02-13
Schreibe einen Kommentar