Auf Objektmethode zugreifen

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
proggerr
User
Beiträge: 8
Registriert: Samstag 22. April 2006, 12:24

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!
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

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
proggerr
User
Beiträge: 8
Registriert: Samstag 22. April 2006, 12:24

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
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?
proggerr
User
Beiträge: 8
Registriert: Samstag 22. April 2006, 12:24

ah danke!
mein fehler war dass ich die meteors nicht per self.m=Meteor()
sondern mit m=Meteor() erzeugt habe sehr dumm von mir! :)
Antworten