Seite 1 von 1

Klasse auf mehrere Dateien aufteilen

Verfasst: Montag 7. August 2006, 11:55
von martoss
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:

Verfasst: Montag 7. August 2006, 12:05
von CM
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

Re: Klasse auf mehrere Dateien aufteilen

Verfasst: Montag 7. August 2006, 12:06
von gerold
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
:-)

Verfasst: Montag 7. August 2006, 13:12
von Michael Schneider
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

Verfasst: Montag 7. August 2006, 13:33
von gerold
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
:-)

Verfasst: Montag 7. August 2006, 14:36
von 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?