Frage mit Klasse

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.
Taranis
User
Beiträge: 27
Registriert: Freitag 6. Januar 2006, 18:05

Uups,
Kaum ist man mal kurz wech und schon startet Ihr stressige
Diskussionen. Nein Ernst beiseite -
Ich komme eben von PHP und arbeite mich jetzt erstmal ein Python ein.
Zu Zope habe Ich schon rübergeschielt. Aber wie Ihr an meinem Postings sehen könnt, quälen mich noch die Basics, wie Variablenübergabe in Funktionen externer Herkunft. :?

Aber an eurem Postings sehe Ich, dass Python eine sehr lebendige Sprache ist, in die es sich lohnt, einzuarbeiten.
Aber wiegesagt erstmal Basics ...

Grüsse
Taranis
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Taranis hat geschrieben:Aber wiegesagt erstmal Basics ...
Damit es leichter ist, schau dir die Links in der FAQ mal an: [wiki]FAQ#WieFangeIchAlsEinsteigerAn[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Taranis hat geschrieben:Hallo Ich wieder,
Nachdem Ich nun als Anfängerin dank eurer Hilfe das Einsteigen einigermassen verinnerlicht habe, stellen sich für mich die nächsten Fragen.

Code in Klassen schreiben.
Wie packt man z.B. den nachfolgenden Code in eine Klasse?
Wie ruft man den Code auf?
Kann man den Code als Klasse auch in einen externen File packen?

Code: Alles auswählen

import os, zipfile
Zip = zipfile.ZipFile("test.zip")
for dirname,dirs,filenames in os.walk("verzeichnis_zum_zippen"):
  for filename in filenames:
    Zip.write(os.path.join(dirname,filename))
Zip.close()
Danke Taranis

Hallo, als GUI empfehle ich wx(Widgets) zusammen mit BOA Construktor.
Ist aber doch ein bischen komplexer, da du dich dann auch um stellenweise mehr kümmern musst als den funktionsrelevanten programmteil.


Als Klasse könnte das so aussehen :

Die __init__ ist eine spezielle methode, musst du nicht unbedingt nehmen in der form, normalerweise müsstest du auch noch super() anwenden um die original __init__ von der Klasse "object" auszuführen, da diese aber leer ist fällt das weg.

Nicht in jedem fall lohnt sich eine Klasse, das hier wäre einer derjenigen ;-)

Code: Alles auswählen

class Zipper(object):
	def __init__(Target = None, Source = None):
		self.Target = Target
		self.Source = Source
	
	def SetTarget(Target):
		self.Target = Target
	
	def SetSource(Source):
		self.Source = Source
		
	def DoWork()
		Zip = zipfile.ZipFile( self.Target )
		for dirname,dirs,filenames in os.walk( self.Source ):
			for filename in filenames:
				Zip.write(os.path.join(dirname,filename))
		Zip.close()

# Benutzen mit :

def TestZipper():
	object = Zipper()
	object.SetTarget ( "test.zip" )
	object.SetSource ( " verzeichnis_zum_zippen" )
	object.DoWork()
	
	
	#alternativ, da die init methode überschrieben wurde:
	object=Zipper("test.zip","verzeichnis_zum_zippen")
	object.DoWork()

TestZipper()
Taranis
User
Beiträge: 27
Registriert: Freitag 6. Januar 2006, 18:05

Hi Alle,
Ich war geschäftlich unterwegs und komme zurück und sehe weitere Postings.
Danke - euer Forum zählt für mich zu den Besten im www

Grüsse Taranis
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mad-Marty hat geschrieben:

Code: Alles auswählen

...
		Zip = zipfile.ZipFile( self.Target )
		for dirname,dirs,filenames in os.walk( self.Source ):
...
	object.SetTarget ( "test.zip" )
	object.SetSource ( " verzeichnis_zum_zippen" )
...
Solche Leerzeichen bei den runden Klammern hatte ich mir auch mal angewöhnt und leider ist in PyLucid Quellentext auch einige da von noch drin... Sie entsprechen aber nicht dem allgemeinen Styleguide :)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten