Angenommen, ich habe eine Schnittstelle A
mit einer einzigen Funktion.Typ Hinweise für Klassen implementieren eine Schnittstelle
class A(metaclass=ABCMeta):
@abstractmethod
def spam(self, x: int) -> str:
pass
Es gibt Klassen B
und C
, die diese Schnittstelle implementieren, aber sie werden nicht direkt initialisiert werden. Ich werde eine Fabrikmethode (sagen wir) haben, die mir ein passendes Objekt, das A
implementiert, zurückgibt. Also in diesem Fall, wenn ich spam
in B
und C
implementieren, sollte ich die Typhinweise wiederholen? Praktisch, da B
und C
nicht direkt verwendet werden, scheinen die Typhinweise für A
ausreichend zu sein. Aber ich bin neugierig auf die beste Vorgehensweise in dieser Situation; und wenn es andere Probleme gibt, die berücksichtigt werden müssen.
Wenn Sie eine statische Analyse durchführen, ist die sicherste Option, Hinweise überall zu liefern. Diese Frage hängt wirklich davon ab, wie statische Analysatoren implementiert werden. Ich glaube nicht, dass Analysatoren erkennen werden, dass Ihre Klasse eine abstrakte Methode implementiert und folglich die dort bereitgestellten Typen verwendet. –