Hilfe bei "object".

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
Pycus
User
Beiträge: 3
Registriert: Sonntag 30. Dezember 2018, 23:02

Hallo Experten,

ich lerne gerade Python und stolpere über diesen Code:

import threading

def printit() -> object:
threading.Timer(5.0, printit).start()
print ("Hello, World!")

printit()

Der Code macht das, was ich will. Aber was bedeutet der Ausdruck "-> object:" ???
EIn Schlüsselwort "object" gibt es wohl nicht.

Danke im Voraus.
inco
User
Beiträge: 16
Registriert: Sonntag 30. Dezember 2018, 16:32

Nie gesehen. Hast du eine Quelle dazu?
Benutzeravatar
__blackjack__
User
Beiträge: 14036
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pycus: Der Ausdruck bedeutet das der, der das geschrieben hat, auch keine Ahnung hat, denn sonst hätte er nicht so etwas sinnbefreites geschrieben. :twisted:

Im offiziellen Tutorial kommt das im Abschnitt Funktion Annotations dran. `object` ist ein eingebauter Datentyp, der implizit als Basisklasse für eigene Klassen verwendet wird, wenn man keine angibt. Das ist also die Wurzel allen Üb…, äh, aller Klassenhierarchien. ;-) Und man kann Exemplare davon als “Marker“ erstellen – Werte auf die man mit ``is``/``is not`` garantiert eindeutig testen kann.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Sirius3
User
Beiträge: 18268
Registriert: Sonntag 21. Oktober 2012, 17:20

Typ-Annotationen sind etwas, was die Welt nicht braucht, vor allem, wenn sie total generisch sind (alles erbt von object) und zudem noch für eine Funktion verwendet wird, die None als Rückgabewert hat.

@Pycus: was hast Du eigentlich vor. Threads sind nichts, was man verwenden will, wenn es nicht unbedingt nötig ist. Etwas alle 5 Sekunden ausgeben zu lassen, geht mit einer Schleife einfacher:

Code: Alles auswählen

while True:
    print("Hallo!")
    time.sleep(5)
Pycus
User
Beiträge: 3
Registriert: Sonntag 30. Dezember 2018, 23:02

Ein gesundes neues Jahr Euch allen !

Nun zum Thema:

Hab verstanden, das das Konstrukt "-> object" nur schmückendes Beiwerk ist. Habe es weggelassen, funzt auch....... :-) :-) :-) Danke an alle die, die sich damit beschäftigt haben.

@Sirius3: wg. den Threads -> ich bin auf der Suche nach Timern. Hab bisher viel mit Delphi programmiert, da ziehe ich so viele Timer wie ich will auf die Form. Mehr wie den den Intervall angeben und Starten und Stoppen will ich nicht.
Ich hoffe immer noch, das es ein Paket gibt welches ich zu diesem Zwecke einbinden kann.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja, gibt es - https://docs.python.org/3/library/sched.html

Das ist allerdings fuer "normalen" Code, in dem du selbst eine Hauptschleife schreibst. Wenn du von Delphi kommst, dann geht es dir ggf. um GUI-Programmierung? Da haben die diversen Toolkits auch Timer, allerdings sind die - in meinen Augen gottlob - nicht durch UI-Objekte repraesentiert, sondern nur im Code. In Qt sind es QTimer, in tkinter die after-Methode auf Widgets. Hier im Forum finden sich fuer beides viele Beispiele.
Pycus
User
Beiträge: 3
Registriert: Sonntag 30. Dezember 2018, 23:02

@__deets__: Die after-Methode vom tkinter sieht gut aus. QT habe ich erst mal auf Eis gelegt, gefällt mir bis jetzt nicht. Danke.
Antworten