Seite 1 von 1

funktionen einer Klasse in ein anderes File auslagern

Verfasst: Freitag 19. Januar 2007, 21:36
von tuner
Hy,

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

wie mach ich das am besten?

gruss, toni.

Verfasst: Freitag 19. Januar 2007, 21:42
von Leonidas
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.

Verfasst: Freitag 19. Januar 2007, 21:52
von tuner
das eine modul ist eigentlich nur die eine klasse.

das muss doch irgendwie gehen.

Verfasst: Freitag 19. Januar 2007, 22:09
von CM
Hallo

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

Gruß,
Christian

Verfasst: Freitag 19. Januar 2007, 22:16
von tuner
ja, genau.

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


gruss.

Verfasst: Freitag 19. Januar 2007, 22:26
von CM
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

Verfasst: Freitag 19. Januar 2007, 22:46
von BlackJack
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.

Verfasst: Freitag 19. Januar 2007, 23:03
von tuner
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.

Verfasst: Freitag 19. Januar 2007, 23:22
von CM
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