[Python-de] Stimmt das so?

Achim Domma (ProCoders) domma at procoders.net
Mit Jul 9 17:55:30 EDT 2003


Hi Jan,

> Thing = Entity("thing")
>
> Also, ich übergebe "thing" in die init Funktion der Klasse Entity. Dann
> werden dort erst mal die 2 Konstruktoren mit Namen self.mObjects und
> self.mAgents instanziert. Ich hoffe das stimmt soweit.

fast, aber nicht ganz. Du läßt Python eine Instanz der Klasse 'Entity'
erzeugen. Während Python diese erzeugt ruft es die __init__ Funktion auf, um
die Instanz zu initialisieren. Die {}s sind keine Konstruktoren, sondern
leere Dictionaries. D.h. self.mObjects und self.mAgents wird jeweils ein
(unterschiedlicher) leerer Dictionaire zugewiesen.

> Danach wandle ich die Id von einem Objekt in einen String um und übergebe
> diesen in die Variable "THING". ( __str__)

Nein!

> Die Funktion objects wird doch in diesem Fall, oder im Moment
> noch gar nicht aufgerufen oder?

Stimmt! In deinem Beispiel wird wirklich erstmal nur __init__ aufgerufen.
__str__ wird wie gesagt nur benutzt, wenn du 'Thing' in einen String
umwandeln wolltest. Also z.B. so:

blabla = str(Thing)
  oder
print Thing

Gruß,
Achim