Hy,
ich moechte der uebersicht halber Funktionen einer klasse in ein anderes File auslagern.
wie mach ich das am besten?
gruss, toni.
funktionen einer Klasse in ein anderes File auslagern
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.
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 (former) Modvoice
Hallo
nur, damit wir uns nicht falsch verstehen: Du hast eine Klasse mitsamt allen Funktionen und willst diese auf verschiedene Dateien splitten?
Gruß,
Christian
nur, damit wir uns nicht falsch verstehen: Du hast eine Klasse mitsamt allen Funktionen und willst diese auf verschiedene Dateien splitten?
Gruß,
Christian
Kann ich zwar nicht so recht glauben, aber:
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
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
Gruß,
Christian
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.
naja, nicht wirklich.. ist nicht mein code.
was ich geplant hatte sah ungefaehr so aus:
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?
ps: falls das oben eine greueltat ist. ich bin eher (noch) kein richtiger python-programmierer.
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):
...
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.
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?
. 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
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?
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: 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.
Greueltat sicher nicht, aber clever auch nichttuner 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.

Und weil Du Dich selber als Anfänger bezeichnest, solltest Du vielleicht doch mal etwas mehr Code sehen lassen ...
Gruß,
Christian