Frage von jan190297, 62

Was bedeutet (self, request, *args, **kwargs)?

Hey Leute :) Ich wollte mal wissen, ob jemand mir einigermaßen verständlich erklären kann für was die Parameter self, request, args, kwargs stehen. Ich programmiere mit dem Webframework Django und bin ein ziemlicher Anfänger aber muss das hier für meinen Betrieb machen und jetzt bin ich dabei das erstmal langsam zu verstehen. Google liefert mir bislang noch keine verständliche Antwort. Danke schon mal für eure Hilfe! :)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von holofoxx, 34

Hi jan190297,

Python ist objektorientiert. Das heißt du kannst Klassen schreiben in denen Funktionen stehen. Wenn du aus dieser Klasse (stell es dir vor wie einen Bauplan) ein Objekt generierst und dann auf dieses Objekt eine Funktion aus der Klasse anwendest, hilft 'self' dabei, dass sich die Funktion auch wirklich nur auf dieses Objekt bezieht. 

Beispiel: wir haben die Klasse 'Auto' mit der Funktion 'fahren(self, Geschwindigkeit)'. Nun möchtest du aus dieser Klasse einen Bugattio Veyron Super Sport (bvss) generieren und diesen mit 420km/h fahren lassen. 

Dann folgt: bvss=Auto(). Dies generiert das Objekt 'bvss' aus der Klasse 'Auto'. Damit der Bugatti jetzt auch mit 420 fährt musst du noch sagen 'bvss.fahren(420)'. Was in Python beim Funktionsaufruf passiert ist folgendes: bvss.fahren(bvss, 420). Das 'self' in der Klasse wird durch die Instanzvariable (das generierte Objekt 'bvss') ersetzt. So weiß Python dass du dich explizit nur auf das Objekt 'bvss' beziehst wenn du die Funktion aufrufst. 

'request' ist mir nicht bekannt, weshalb ich denke dass es sich einfach nur um einen vom Programmierer definierten Parameter handelt. 

'*args' erlaubt es dir beliebig viele weitere Argumente in die Funktion zu geben die du nicht definiert hast als du die Funktion geschrieben hast. 

'**kwargs' steht für 'keyworded arguments' und bedeutet ebenfalls dass du weitere beliebige Parameter in die Funktion passen kannst ALLERDINGS mit Schlüsselwörtern. Das heißt statt 'fahren(self, Geschwindigkeit)' -> 'fahren(420)' kannst du nun sagen 'fahren(self, **kwargs)' -> 'fahren(Geschwindigkeit=420, Beschleunigung=5, Straßenverhältnisse="rutschig")'. Die Funktion muss allerdings dann intern in der Lage sein diese variable Zahl an Parametern zu verarbeiten, weswegen solche Funktionen eher zum Ausgeben von Listenelementen verwendet werden. 

Ich hoffe das hilft dir ein wenig :) am schlimmsten zu verstehen ist glaube ich 'self' hat mich 4h damals gekostet. Und hunderte Foren und Websites ^^ 

Viel Spaß noch bei der Ausbildung und beim Programmieren!

Grüße foxx

Antwort
von qugart, 21

Hol dir Literatur dazu.

Ansonsten mal suchen: http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

Keine passende Antwort gefunden?

Fragen Sie die Community