Seite 1 von 1

Wie Datentypen in Python erkennen?

Verfasst: Freitag 5. Juli 2019, 11:56
von iNeedInput
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.

Re: Wie Datentypen in Python erkennen?

Verfasst: Freitag 5. Juli 2019, 12:03
von __deets__
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

Re: Wie Datentypen in Python erkennen?

Verfasst: Freitag 5. Juli 2019, 20:09
von noisefloor
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