Methode in eigener Klasse aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HarryPotter
User
Beiträge: 16
Registriert: Dienstag 5. November 2019, 16:07

Hallo zusammen :)

Ich habe Mal eine Frage über ein Problem, das mir untergekommen ist.

Ich habe einen Code gesehen, bei dem in einer Methode eine andere Methode der eigenen Klasse über ein Objekt aufgerufen wurde.

Ich hab nicht den Code im Kopf, aber das Prinzip.

Also es wurde eine Klasse erzeugt.

class Init:

def __init__(self):
self.init_a = None
self.init_b = None
# hier wurden noch ca. noch 10 weitere init erzeugt.

def __init_a(self):
try:
self init_a = ein Klasse aus einem anderen Modul wird aufgerufen
exept:
Logger ("schlug fehl")

Alle diese init aus dem Konstruktor wurden so aufgebaut.

Dann gibt es eine Funktion, bei dem alle diese init Funktionen aufgerufen worden sind.

def init_all(self):
self.init_a = Init().__init_a()
self init_b = Init().__init_b()
# usw

If __name__ == '__name__':
Init = Init().init_all()


Also hier sehe ich das Problem, dass verschiedene Objekte aus der Klasse Init erzeugt werden.

Ich vermute, hier wollte man den Code im Konstruktor entzerren.


Nun zu meinen Fragen.

Ist dieser Style in Ordnung? Meiner Meinung nach nicht, bin mir aber nicht sicher.

Ich hab überlegt, den Style so beizubehalten (eine init_all), aber ohne die Aufrufe einzelner eigener Objekte in einer gesamten init.

Mir ist nur eine statische Methode eingefallen, die die Objekte bekommt und übergibt. Ich weiß (um ehrlich zu sein) aber nicht, wie man so etwas angehen würde.

Weiß jemand, wie man sowas angeht?

Danke für eure Hilfe im voraus :)

Viele Grüße
Danke und viele Grüße :)
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Das macht alles so keinen Sinn.
__init__ ist dazu da, ein Objekt zu initialisieren. Und wenn man nach ausführen von __init__ kein fertiges Objekt hat, dann ist das schlechter Stil.

Was das init_all soll, ist mir nicht klar, weil da werden ja lauter neue Init-Instanzen erzeugt, das ist bestimmt nicht richtig.

Statische Methoden braucht man eigentlich nie. Was hast Du denn genau vor? Zeige richtigen Code.
HarryPotter
User
Beiträge: 16
Registriert: Dienstag 5. November 2019, 16:07

Danke für die schnelle Antwort sirius3 :)

Kann ich gerne machen. Aber das geht erst morgen, da mein Rechner nicht hier ist. Den muss ich Morgen abholen.

Es geht um Ansteuerungen in einem Handy über adb.

Dabei soll ein Server (http) verschiedene Objekte erzeugen, der für die Steuerung zuständig ist und ein paar Sachen mehr, primär geht es aber um die Ansteuerung.

Also in dieser Init sollen die Objekte der Ansteuerung usw. erzeugt werden (zumindest habe ich das so verstanden).

In dem Code war der Aufbau wie oben genannt.

Es wurde in einem site-package eine Instanz der Klasse adb Ansteuerung erzeugt. Wie in __init_a nur eben ein Objekt der Klasse adb.

Als Beispiel __init_adb()

Dieses Objekt soll dann die Ansteuerung übernehmen, also z.b. init_adb.click_element(Element)

Ich hoffe dir sagt es nun ein wenig mehr :)
Danke und viele Grüße :)
Antworten