Klasse auf mehrere Dateien aufteilen

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.
Antworten
martoss
User
Beiträge: 1
Registriert: Montag 7. August 2006, 11:33

Hallo Leute,

ist es möglich die Methoden einer Klasse auf mehrere Dateien aufzuteilen? Ich will keine Vererbung oder so sondern einfach nur aus Komfortgründen kleinere Dateien haben.

Folgendes hat leider nicht funktioniert:

DateiA

Code: Alles auswählen

from Package.DateiB import *
class X:
  def m1:
DateiB

Code: Alles auswählen

class X:
  def m2:
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

ob es Dich glücklich macht mußt Du selber entscheiden :D , aber natürlich kannst Du Methoden in andere Dateien ausgliedern.

Code: Alles auswählen

#Hauptdatei
from Nebendatei import meth
class X:
   pass
#Nebendatei
def meth():
   pass
jetzt kannst Du meth in class X ansprechen.

Gruß,
Christian
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

martoss hat geschrieben:ist es möglich die Methoden einer Klasse auf mehrere Dateien aufzuteilen?
Hi martoss!

Kurze Antwort: Vergiss es. :roll:
Lange Antwort: ... die spare ich mir.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo,

also ich finde, wenn das jemand so machen möchte und es möglich ist, soll er das tun. Und mit execfile ist es möglich:

Code: Alles auswählen

########################################
##  Klassendefinition
class Klasse:
	def __init__(self):
		execfile("auslager.py")   ##  deklariere Funktionen
		#...
		
Klasse().ausgabe("Hallo Welt")


###############################################
##  Datei: auslager.py
def ausgabe(s): print s      ##  definiere Funktion
self.ausgabe = ausgabe       ##  speichere Funktion als Attribut
Es gilt zu beachten, dass die eigene Objektreferenz (hier self) nicht an die Funktion direkt übergeben wird, sondern im lokalen Namensraum der Auslagerungsdatei verfügbar ist!

Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Michael Schneider hat geschrieben:also ich finde, wenn das jemand so machen möchte und es möglich ist, soll er das tun. Und mit execfile ist es möglich:
[...]
Es gilt zu beachten, dass die eigene Objektreferenz (hier self) nicht an die Funktion direkt übergeben wird, sondern im lokalen Namensraum der Auslagerungsdatei verfügbar ist!
Hi Michael!

Ich habe nie bestritten, dass es geht, sondern wollte nur die hoffentlich eindeutige Aussage "Tu es nicht!" raus lassen. ;-)

Quellcode auf mehrere Module aufteilen. Natürlich -- das ist eine super Sache. Aber etwas was zusammen gehört, auseinander zu reißen -- z.B. eine Klasse --, dass finde ich nicht gut. Es verkompliziert, meines Erachtens, die Programmierung eher, als dass es etwas nützt.

Es unterbricht auch die Codevervollständigung mancher IDEs und erschwert schon deshalb die Entwicklung. Allerdings soll es mir egal sein. Ich wollte nur einen gut gemeinten Tipp los lassen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Ich würde auch sagen das klingt verdächtig nach einem Entwurfsproblem. Aus welchem Grund kann eine Klasse zu umfangreich werden? Sicher das wirklich alles in diese Klasse gehört und sich nicht in kleinere Klassen per Vererbung oder Delegation aufteilen lässt?
Antworten