Seite 1 von 1

can Class als Parameter in Python übergeben, wie unter C++

Verfasst: Freitag 29. Juli 2005, 09:49
von Gast
guten Tag zusammen,

ich wollte gerne in Python eine Klasse als Parameter übergeben, wie unter C++ template oder ähnliches. Kann man das machen? Wenn ja, wie bitte gebe ein Hint!

MfG
HL

Verfasst: Freitag 29. Juli 2005, 10:13
von Toni83
Habe ich das richtig verstanden?

Du willst eine Klasseninstanz z.B. einer anderen Klasse übergeben?
Wenn ja:

class a:

def __init__(self,...
......

class b:

def __init__(self,wert,...
......


wert = a(...)
b(wert,...)

In der Klasse b kannst du dann einzelne Methoden der Klasse a aufrufen.

Gruss,
Toni

Verfasst: Freitag 29. Juli 2005, 10:28
von Gast
hallo Toni,

Danke. Ok, als Objekte wie andere int, str..., Eigentlich wollte ich wissen, ob man es typsicher angeben, z.B. es akzeptiert nur bestimmte Klasse/Objekte, z.B ich wollte es nur int, aber nicht string akzeptieren!

Danke noch einmal!

HL

Verfasst: Freitag 29. Juli 2005, 10:50
von Toni83
Ich verstehe deine Antwort nicht ganz.
Du kannst den Typ einer Variable bestimmen indem du folgendes
eingibst:

type(Variablenname)

Dann kannst du prüfen welcher Typ deine Variable hat.

Was bedeutet:
"...z.B. es akzeptiert nur bestimmte Klasse/Objekte, z.B ich wollte es nur int, aber nicht string akzeptieren!"

Du musst nicht wie in C sagen, dass du einen int übergeben willst.
Ich glaub in C ging das so:

void (char,int,....)

in Python:

def(s,i,...) # s ist eine char-Variable und i eine Integer.

Wenn du prüfen willst was du übergibst, benutze einfach type().
In einem if-Konstrukt kannst du dann dies überprüfen.

Gruss,
Toni

Verfasst: Freitag 29. Juli 2005, 12:50
von Gast
Hallo Toni,

Danke, ich verstehe langsam :oops:

ich wollte meine Klasse nicht alle Objekte akzeptieren, sondern nur bestimmte. Es scheint mir in Python nicht zu gehen, so muss ich selbst überprüfen, before ich verwende, eventuell Exception erzeugen

Danke noch einmal!

HL

Verfasst: Freitag 29. Juli 2005, 13:12
von Toni83
try:
......

except:

.....

wäre eine Möglichkeit dies vorerst übersichtlich zu lösen, da gebe ich dir recht.

Verfasst: Freitag 29. Juli 2005, 14:04
von Leonidas
Anonymous hat geschrieben:ich wollte meine Klasse nicht alle Objekte akzeptieren, sondern nur bestimmte. Es scheint mir in Python nicht zu gehen, so muss ich selbst überprüfen, before ich verwende, eventuell Exception erzeugen
Sieh dir mal PyProtocols an, das klingt genau nach dem was du suchst.

Verfasst: Samstag 30. Juli 2005, 01:28
von Joghurt
Wie schon erwähnt, wird es unter Python etwas anders gehandhabt. Wenn deine Funktion einen int "erwartet", gehst du mit ihr einfach wie mit einem Integer um, wenn das übergebene Objekt das nicht unterstützt, wird eine Exception ausgelöst.

Überlege dir zweimal, ob du wirklich auf den Typ testen muss. Wenn dein int-Parameter z.B. eine Größenangabe sein soll, kann es dir egal sein, ob es ein richtiger int ist, oder ein Datenbankobjekt (grob gesprochen)

Verfasst: Montag 1. August 2005, 18:52
von fs111
GvR hat zum Thema Typen mal sinngemäß gesagt:

"We don't care, we write unit tests."

Genau das solltest Du auch tun.

fs111