[Python-de] Parent außerhalb einer Klasse

Diez B. Roggisch deets at web.de
Don Jul 7 18:29:28 CEST 2005


Stefan Miefert wrote:
> Hallo,
> 
> wenn ich aufrufe
> 
> if __name__="_main":
>    meinWert="Hallo"
>    c = klasse()
> 
> wie kann ich dann innerhalb der Klasse auf "meinWert" zugreifen?
> 
> self als parent zu übergeben funktioniert ja leider nicht

Ehrlich gesagt verstehe ich nicht genau was du willst. Was ist deiner
Ansicht nach ein "parent"?

Zum einen kannst du meinWert als Parameter an klasse übergeben:

class klasse:
     def __init__(self, einWert):
         self.einWert = einWert


if __name__ == "__main__":
      c = klasse("Hallo")



Alternativ kann man auch in klasse-Klassenmethoden auf globale Variablen
zugreifen:

class klasse:
     def __init__(self, einWert):
         print meinWert

if __name__ == "__main__":
      meinWert = "Hallo"
      c = klasse()


Globale Variablen sind aber eine schlechte idee - man muss sich beim dem
versuch sie zum umgehen zwar nicht umbringen, aber Nah-Tod-Erfahrungen
sind angebracht - sonst kommen selbige spätestens beim Debuggen. Wichtig
auch noch: global bedeutet immer modulglobal - ein "total-global" gibt's
nicht.

Wichtig: Wenn klasse den Wert der unter dem Namen "meinWert" im
(modul)-globalen Namensraum ändern möchte, dann muss das so aussehen:

class klasse:
     def __init__(self, einWert):
         print meinWert

     def tuwas(self):
         global meinWert  # Wichtig, damit wird meinWert beim setzen im
                          # modulnamensraum gesetzt
         meinWert = "pillepalle"


Diez