Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Problem] Python OO class
XXLTomate Offline
Ketchup

Beiträge: 56
Registriert seit: Nov 2008
Beitrag #1
[Problem] Python OO class
Ich hoffe hier versteht jemand mehr von python Objekt Orientierung und den Klassen :D
Also ich würde gerne von einer Klasse aus auf eine variable in einer anderen Klasse zugreifen. Wie geht das und wie? :fresse:

Beispiel um das ganze zu verdeutlichen:
Code:
#!/usr/bin/env python

class Eins():
    def __init__(self):
        self.var = "test"
        vari = "test2"
        
class Zwei():
    def __init__(self):
        #test
        print var
        #~ print Eins.var
        #~ print Eins.__init__.var
        #test2
        #~ print vari
        #~ print Eins.vari
        #~ print Eins.__init__.vari

Eins()
Zwei()

Danke schonmal :)
16.04.2010 14:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.840
Registriert seit: Jul 2008
Beitrag #2
[Problem] Python OO class
Oje, da hat jemand Defizite in Objektorientierter Programmierung allgemein, richtig?

Klassen sind dazu gedacht, dass man von ihnen mehrere Objekte erstellt. Du kannst nicht von einer Klasse ein Attribut abfragen*. Das wäre so als wenn du fragst "Welche Farbe haben Häuser"? Das macht keinen Sinn, denn jedes Haus hat eine andere Farbe. Du müsstest also in diesem Fall spezifizieren, _welches_ "Eins" du eigentlich meinst. Also womöglich meinst du so etwas:

Code:
#!/usr/bin/env python

class Eins():
    def __init__(self):
        self.var = "test"
        
class Zwei():
    def __init__(self):
        ein_eins = Eins()  # Erstellt ein neues "Eins": ein_eins
        print ein_eins.var # Gibt davon "var" aus
        
Zwei()

*An die Klugscheißer: Statische Variablen sind ne Scheißidee die das objektorientierte Konzept kaputtmachen, und man sollte Anfänger nicht damit verwirren. Ich weiß dass es sowas gibt, ist hier aber doof.
16.04.2010 15:10
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
XXLTomate Offline
Ketchup

Beiträge: 56
Registriert seit: Nov 2008
Beitrag #3
[Problem] Python OO class
Ah OK danke schon mal, soweit hab ich leider nicht gedacht :).
Wenn ich nun aus einer "normalen"-klasse z.B. eine Textbox in wxpython beschriften will?(für wxpython wird ja (normalerweise) eine neue Klasse erstellt)

Wenn ich die dann in meiner "normalen"-Klasse aufrufe, wird ja ein neues "Fenster" erstellt in dem, dann die Textbox beschriftet wird. Aber wie ändere ich in einer schon geöffneten wxpython Klasse den Text einer Textbox aus einer anderen Klasse heraus? (oder ist das schier unmöglich :fresse:)
16.04.2010 17:49
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #4
[Problem] Python OO class
Sofern ich das Problem richtig verstanden habe: In dem du in der zweiten Klasse eine Methode definierst, die als Parameter einen Typ der ersten Kasse akzeptiert und dann damit arbeitet.
(Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2010 18:36 von gandro.)
16.04.2010 18:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
XXLTomate Offline
Ketchup

Beiträge: 56
Registriert seit: Nov 2008
Beitrag #5
[Problem] Python OO class
OK bin selbst drauf gekommen als ich das Beispiel hier ein wenig konkreter mache wollte :D
(is doch ein wenig übersichtlicher als die ca 400 Zeilen code in denen ich das brauch (auf nem 800x480 Bildschirm =)))


Code:
#!/usr/bin/env python

import wx

class Eins(wx.Frame):
    def __init__(self,parent,id):
            #Fenster zeichnen
            wx.Frame.__init__(self, parent, id, "test", size=(50,40))
            panel=wx.Panel(self)
            
            #Textbox zeichnen
            self.Textbox = wx.TextCtrl(panel, -1, "Vorher", size=(50,20))
            #Passender Button dazu
            self.Button = wx.Button(panel, -1, "Mach", (0,20) ,size=(50,20))
            #Wenn Button gedruckt wird "Zwei" aufrufen
            self.Bind(wx.EVT_BUTTON, Zwei().mach, self.Button)
class Zwei():
    
    def __init__(self):
        pass
    def mach(self, event):
        print "Zwei"
        ##Nun soll hier die Textbox-Beschriftung verandert werden
        frame.Textbox.SetValue("Nach") #<-- Geht :-)
    
    
if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=Eins(parent=None, id=-1) #<-- HIER steckt die losung fur das Problem
    frame.Center()
    frame.Show()
    app.MainLoop()

Danke für eure hilfe :D
16.04.2010 22:27
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste