funktionen einer Klasse in ein anderes File auslagern

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.
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

funktionen einer Klasse in ein anderes File auslagern

Beitragvon tuner » Freitag 19. Januar 2007, 21:36

Hy,

ich moechte der uebersicht halber Funktionen einer klasse in ein anderes File auslagern.

wie mach ich das am besten?

gruss, toni.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 19. Januar 2007, 21:42

Kurz: Die gesammte Klasse in ein anderes Modul stecken.

Lang: Es geht natürlich auch anders, aber die kurze und simpelste Variante ist ganz einfach die beste.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

Beitragvon tuner » Freitag 19. Januar 2007, 21:52

das eine modul ist eigentlich nur die eine klasse.

das muss doch irgendwie gehen.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Freitag 19. Januar 2007, 22:09

Hallo

nur, damit wir uns nicht falsch verstehen: Du hast eine Klasse mitsamt allen Funktionen und willst diese auf verschiedene Dateien splitten?

Gruß,
Christian
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

Beitragvon tuner » Freitag 19. Januar 2007, 22:16

ja, genau.

das waere der uebersicht halber das beste, und wuerde mir viel aufwandt ersparen.


gruss.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Freitag 19. Januar 2007, 22:26

Kann ich zwar nicht so recht glauben, aber:

Code: Alles auswählen

# Datei parent.py:

from daughter import bar2

class foo():
    def bar1(self): pass # Funktion in Deiner Klasse
   
    def bar3(self, *args):
        bar2(self, *args)
   
   
#Datei daughter.py:

def bar2(parent, *args):
    pass


Magst Du vielleicht ein bißchen Code zeigen? Vielleicht kann man Dir dann besser helfen. Sehr wahrscheinlich nämlich sitzt Du einem Trugschluß auf.

Gruß,
Christian
BlackJack

Beitragvon BlackJack » Freitag 19. Januar 2007, 22:46

Wieviele Methoden hat die Klasse denn? Es gibt natürlich Ausnahmen, aber in der Regel sollten es nicht so viele sein, das man den Wunsch verspürt sie auf mehrere Dateien aufzuteilen.
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

Beitragvon tuner » Freitag 19. Januar 2007, 23:03

naja, nicht wirklich.. ist nicht mein code.

was ich geplant hatte sah ungefaehr so aus:

Code: Alles auswählen

class parent:
   ...
   def __tuwas(self, data):
      ...
   def aktion(self, data):
      text = daughter(data)
      text.getDescription(self)

class daughter:
   def __init__(data):
      self.data = data
      ...
   def getDescription(parent):
      ...
      if parent.__tuwas(data):
...


aber es funktioniert nicht.
AttributeError: daughter: instance has no attribute tuwas ... oder so.

dann habe ich mir gedacht, ob es wirklich wichtig ist, eine neue klasse dafuer zu erstellen. eigentlich nicht, da es nur teilfunktionen sind, aber sher text-intensiv.

geht auch

Code: Alles auswählen

from daughter import *
?

ps: falls das oben eine greueltat ist. ich bin eher (noch) kein richtiger python-programmierer.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Freitag 19. Januar 2007, 23:22

Hoi

Bitte zeige Deinen Code - das der hier gezeigte Pseudocode nicht funktionieren kann, kannst Du Dir selber klar machen: Was ist parent? Was wird hier an was übergeben, bzw. nicht übergeben?

tuner hat geschrieben:dann habe ich mir gedacht, ob es wirklich wichtig ist, eine neue klasse dafuer zu erstellen. eigentlich nicht, da es nur teilfunktionen sind, aber sher text-intensiv.

Sehr textintensiv? Womöglich drückt da der Schuh. Sooooo derartig textintensiv, daß man eine Methode auslagern muß, kann sie fast nicht sein. Wetten?

tuner hat geschrieben:geht auch

Code: Alles auswählen

from daughter import *
?

ps: falls das oben eine greueltat ist. ich bin eher (noch) kein richtiger python-programmierer.

Greueltat sicher nicht, aber clever auch nicht ;-) . Du haust Dir auf diese Weise Deinen Namespace zu - spätestens, wenn Deine Skripte laufen lernen und größere Programme entstehen provozierst Du so Fehler. Im interaktiven Modus zum schnellen Testen ist das eine aber eine tolle Sache ...
Und weil Du Dich selber als Anfänger bezeichnest, solltest Du vielleicht doch mal etwas mehr Code sehen lassen ...

Gruß,
Christian

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]