Seite 1 von 1

Auf Objektmethode zugreifen

Verfasst: Montag 24. April 2006, 15:10
von proggerr
Hallo,
ist es möglich auf ein Objekt zuzugreifen,
das, Teil eines anderen Objektes ist von einem völlig anderem Objekt.
Ähh komische Formulierung evntl. hilft der Quelltext ein bisschen

Code: Alles auswählen


class Weltraum:
  def __init__(self):
    self.fenster = Tk()
    self.canvas = Canvas(self.fenster, width=500,
                         height=400, bg='black')
  [...]

 # hier wird ein Objekt instanziert, das eine Methode neustarten hat
    
met1=Meteor(self, m1)
 #Nun möchte ich von einem Objekt der Klasse UL auf diese Methode 
#neustarten zugreifen

[...]


self.w.met1.neustart()
w.met1.neustart()
met1.neustart()

#geht leider alles nicht! :(

Hoffe ihr könnt mir weiterhelfen danke!

Verfasst: Montag 24. April 2006, 16:16
von Bernhard
Hi
Vielleicht liege ich jetzt ganz falsch, aber wie hängen "Meteor" und "Weltraum" miteinander zusammen? Wolltest Du

met1=Weltraum() schreiben?

oder sollte das met1=Meteor(...) eingerückt sein und in der Klasse Meteor stehen?
Vielleicht ist Dein Code-Beispiel doch ein wenig sehr kurz?

Gruß,
Bernhard

Verfasst: Montag 24. April 2006, 16:21
von proggerr
hi nochmal,
habe folgende klassen
in der Klasse weltraum lasse ich ein paar meteors instanzieren,
auf die ich etz mit der klasse kugel zugreifen möchte.
Um nicht unendliche viele Meteors spammen zu müssen möchte ich im falle einer kollision den meteor einfach neustarten.
alles funktioniert bist auf den zugriff auf diese methode :(

Code: Alles auswählen



class Weltraum:

hat ein fenster tk()
label und canvas
erstellt 12 meteoriten


class Meteor(Thread):

fliegt im canvas von oben nach unten


class Schiff(Thread):

steht unten rum


class Kugel(Thread):
 

soll im falle einer kollision die methode neustart des
meteors betätigen



w=Weltraum()


frage nebenbei.
ich führe ein dictionary in dem steht, welche canvas id zu welchem meteor
gehört.
wie kann ich in einer bedingung nun den betroffenen meteor, ohne 12 einzelbedingungen ansprechen
alle meteors heissen m1 m2 m3 m4
nun möchte ich den meteor mn ansprechen wobei n ein Integer aus dem dictionary ist ansprechen.
ist sowas möglich ?
danke im Vorraus

Verfasst: Montag 24. April 2006, 22:36
von BlackJack
proggerr hat geschrieben:hi nochmal,
habe folgende klassen
in der Klasse weltraum lasse ich ein paar meteors instanzieren,
auf die ich etz mit der klasse kugel zugreifen möchte.
Dann müsste das Kugel-Objekt das Weltraum-Objekt "kennen".
frage nebenbei.
ich führe ein dictionary in dem steht, welche canvas id zu welchem meteor
gehört.
wie kann ich in einer bedingung nun den betroffenen meteor, ohne 12 einzelbedingungen ansprechen
alle meteors heissen m1 m2 m3 m4
nun möchte ich den meteor mn ansprechen wobei n ein Integer aus dem dictionary ist ansprechen.
ist sowas möglich ?
Ja das ist möglich. Du musst `n` in eine Zeichenkette umwandeln und ein 'm' davor hängen. Zum Beispiel so:

Code: Alles auswählen

In [34]:n = 42

In [35]:print 'm%d' % n
m42
Aber warum speicherst Du die Meteore nicht gleich in einer Liste und greifst über den Index darauf zu?

Verfasst: Dienstag 25. April 2006, 15:42
von proggerr
ah danke!
mein fehler war dass ich die meteors nicht per self.m=Meteor()
sondern mit m=Meteor() erzeugt habe sehr dumm von mir! :)