Wie Datentypen in Python erkennen?

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
iNeedInput
User
Beiträge: 1
Registriert: Freitag 5. Juli 2019, 11:43

Ich bin neu in Python und komme komme von anderen Programmiersprachen in denen war es immer üblich, dass der Datentyp bei der deklarierung einer Variable mit angegeben wurde.
Nun wollte ich einer Methode Argument übergeben jedoch bemerkte ich relativ schnell das ich Planlos war, ob die Methode nun Strings, Integer oder was weiß ich für Klassen übergeben bekommen möchte.

Bsp.

Code: Alles auswählen

def initCameraMatrix2D(objectPoints, imagePoints, imageSize, aspectRatio=None):
Ich wüsste jetzt auf anhieb nicht was für Datentypen ich einsetzen soll damit die Funktion Ordnungsgemäß aufgerufen wird.

Eine andere Sache ist das wenn ich selbst eine Methode schreibe und dort ein Parameter übergeben bekommen möchte
kann ich nicht direkt sagen das ich gerne einen String haben möchte, da ich in der Methode Methoden aus der String Klasse aufrufen möchte.

Wie löst ihr diese beiden Situationen?

Danke im Voraus.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Gar nicht. Es ist halt so in Python. Der Nachteil ist, das man es nicht weiss. Der Vorteil ist, dass man auch Typen angeben kann, die sich entsprechend verhalten, und alles ist gut. Nennt sich Ducktyping. Fuer deinen zweiten Fall zB ist das ein grosser Vorteil, denn wenn der Anwender ein Objekt reingibt, dass die gleichen Methode unterstuetzt, dann ist die Methode generischer.

Um rauszufinden, was benoetigt wird, greift man zur Dokumentation. Die ist ja bei der OpenCV ziemlich gut, und da finden sich auch viele Beispiele.

https://docs.opencv.org/2.4/modules/cal ... raMatrix2D
Benutzeravatar
noisefloor
User
Beiträge: 4191
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Wie löst ihr diese beiden Situationen?
Über die Dokumentation. Im 1. Fall lesen, im 2. Fall in dem du deiner Funktion eine entsprechenden Docstring verpasst und dann hoffst, dass der gelesen wird ;-)

Wenn's dir was hilft kannst du auch die mit Python 3.5 eingeführten "type hints" nutzen, siehe PEP 484. In der ersten Abschnitten steht, wozu die gut sind - und das man damit zur Laufzeit nichts erzwingen kann. Und da steht auch explizit, dass Python nun mal eine dynamisch typisierte Sprache ist.

Wenn du dich mental beim Programmieren nicht auf dynamische Typisierung einlassen kannst -> dann nutz' kein Python.

Gruß, noisefloor
Antworten