ich arbeite derzeit an einem privaten Projekt, verwende hierfür Python 3 und habe bisher eher weniger Erfahrung mit Python.
Ich möchte in einem Modul eine Klasse definieren.
Diese Klasse soll mehrere Funktionen besitzen, die mit den Instanzvariablen arbeiten. Wie ich grundsätzlich solche Funktionen anlege, ist mir klar. Mein Problem besteht darin, dass jede einzelne Funktion (aus einem Matlab-Projekt übersetzt) mehrere hundert Zeilen Code besitzt.
Dadurch, dass es nun mehrere Funktionen sind, wäre das python-file das die Klassendefinition beinhaltet mehrere tausend Zeilen lang. Ich würde es der Übersichtlichkeit halber schöner finden, wenn die Funktionen lediglich in der Klasse deklariert werden, die eigentliche Definition der einzelnen Funktionen aber jeweils in eigenen files stattfindet. Ich habe herausgefunden, dass sich das mit staticfunctions umsetzen lässt, wie an folgendem Beispiel zu sehen ist:
main.py:
Code: Alles auswählen
#testfile main
from testclass import test
t=test()
t.classfunc()
Code: Alles auswählen
import clfunction
class test:
def __init__(self):
self.var1=1
self.var2=2
func = staticmethod(clfunction.clfunction)
def classfunc(self):
self.func(self)
Code: Alles auswählen
def clfunction(self):
print(self.var1+self.var2)
self.var1=200
Ich finde diese Vorgehensweise etwas umständlich, zumal die eigentliche Funktion drei verschiedene Namen benötigt: einmal den Namen der Definiton clfunction, dann den Namen func wenn sie mit staticfunction zugewiesen wird und dann nochmal den eigentlichen gewollten Klassenfunktionsnamen classfunc der im optimalen Fall genauso wie clfunction heißen sollte.
Wie geht ihr Profis mit soetwas um? Gibt es hier einen komfortableren Weg Klassenfunktionen extern zu definieren? Weiterhin würde mich interessieren, wie hier die allgemeine Konvention aussieht? Werden normalerweise die Funktionen in der Klasse vollständig definiert, auch wenn dann die Klasse aus mehreren tausend Zeilen Code besteht?
Vielen Dank schon mal.