Pyre: "Ungültige Klasse Instanziation" auf einem Fabrikmuster mit ABC -Typ HinweisPython

Python-Programme
Anonymous
 Pyre: "Ungültige Klasse Instanziation" auf einem Fabrikmuster mit ABC -Typ Hinweis

Post by Anonymous »

Ich habe ein Werksmuster implementiert, aber Pyre-Check-Trips über den Typ-Sinne und denkt, ich möchte den Hinweis zum Mapping-Diktieren instanziieren: Geben Sie [myclassabc]
Hier ist ein minimales Beispiel. Um dies zu erreichen, habe ich einen ABC für die Klasse mit einer abstrakten Methode für die __init __ erstellt. Auf diese Weise kann ich in meiner IDE sehen, welche Parameter dank des ABC Init liefern sollen. Ich erhalte jedoch den Fehler: < /p>

Code: Select all

 33:15: Invalid class instantiation [45]: Cannot instantiate abstract class `MyClassABC` with abstract method `__init__`.
< /code>
Weil Pyre-Check denkt, ich werde den Typ-Hinweis, Typ [myclassabc], instanziieren. Wie kann ich meinen Typ beheben, sodass er immer noch den richtigen Typ ist, aber Pyre-Check glaubt nicht, dass ich eine abstrakte Methode instanziiere? [url=viewtopic.php?t=14917]Ich möchte[/url] den AbstractMethod init für den Parametertyp beibehalten. < /P>
from abc import abstractmethod

class MyClassABC:
@abstractmethod
def __init__(self, name: str) -> None:
pass

class MyClass2(MyClassABC):
def __init__(self, name: str) -> None:
self.name = name

class MyClass(MyClassABC):
def __init__(self, name: str) -> None:
self.name = name

class ClassFactory:
MAPPING: dict[str, type[MyClassABC]] = {
"myclass": MyClass,
"myclass2": MyClass2,
}

@staticmethod
def get_class() -> type[MyClassABC]:
return ClassFactory.MAPPING["myclass"]

if __name__ == "__main__":
factory_cls = ClassFactory.get_class()
instance = factory_cls(name="test")

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post