Seite 2 von 2

Verfasst: Mittwoch 18. Januar 2006, 18:22
von Taranis
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

Verfasst: Mittwoch 18. Januar 2006, 18:26
von jens
Taranis hat geschrieben:Aber wiegesagt erstmal Basics ...
Damit es leichter ist, schau dir die Links in der FAQ mal an: [wiki]FAQ#WieFangeIchAlsEinsteigerAn[/wiki]

Re: Frage mit Klasse

Verfasst: Mittwoch 18. Januar 2006, 20:54
von Mad-Marty
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()

Verfasst: Donnerstag 26. Januar 2006, 11:11
von Taranis
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

Re: Frage mit Klasse

Verfasst: Donnerstag 26. Januar 2006, 11:14
von jens
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 :)