Hallo zusammen,
vor dem Wochenende nochmal eine kleine Frage:
ich habe ein Klasse A und möchte und instanziere diese mehrmals.
Gibt es eine Möglichkeit in dieser Klasse einen Varaiblenwert zu
halten, der in allen Objekten gleich ist? D.h. Ich ändere den Wert
in einem Objekt und in allen anderen Instanzen ändert sich der Wert
auch. Wäre da die Ableitung von einer Basisklasse der einzige Weg?
Danke schon mal für eure Mühen.
alpha
KLassen und Vererbung
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich weiß nicht ob es dass ist was du suchst:
Code: Alles auswählen
In [8]: class A(object):
...: var = 0
...: def __init__(self):
...: self.__class__.var += 1
...:
In [9]: A.var
Out[9]: 0
In [10]: a = A()
In [11]: A.var
Out[11]: 1
In [12]: b = A()
In [13]: A.var
Out[13]: 2
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Es geht über eine Pseudo-Klasse:
Ausgabe:
Code: Alles auswählen
class var:
variable = "test1"
class A:
def __init__( self, var_class ):
self.var_class = var_class
def set( self, value ):
self.var_class.variable = value
def print_var( self ):
print self.var_class.variable
var_class = var
a1 = A( var_class )
a2 = A( var_class )
print var_class.variable
a1.print_var()
a2.print_var()
print "-"*30
a1.set( "test2" )
print var_class.variable
a1.print_var()
a2.print_var()
print "-"*30
a2.set( "test3" )
print var_class.variable
a1.print_var()
a2.print_var()
Code: Alles auswählen
test1
test1
test1
------------------------------
test2
test2
test2
------------------------------
test3
test3
test3
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Was haltet ihr davon?
EDIT: Peinlich. Hab grad gesehen dass Leonidas ja fast genau das selbe gepostet hat. Sorry.
Gruß, mawe
Was haltet ihr davon?
Code: Alles auswählen
In [2]: class A:
...: var = 0
...: def set_var(self, value):
...: self.__class__.var = value
...:
In [3]: a = A()
In [4]: a.var
Out[4]: 0
In [5]: a.set_var(4)
In [6]: a.var
Out[6]: 4
In [7]: b = A()
In [8]: b.var
Out[8]: 4
In [9]: b.set_var(7)
In [10]: b.var
Out[10]: 7
In [11]: a.var
Out[11]: 7
Gruß, mawe
Danke an alle,
@ mawe,
coole Lösung den Ausdruck __class__ kannte ich noch garnicht.
Das ist aber genau das was ich suche. Ne Klassenvariable die für
alle Instanzen gilt. So komm ich sogar über die Vererbung rum.
Einfach ein tolles Forum
alpha
Ich auch
Danke auch an Leonidas
@ mawe,
coole Lösung den Ausdruck __class__ kannte ich noch garnicht.
Das ist aber genau das was ich suche. Ne Klassenvariable die für
alle Instanzen gilt. So komm ich sogar über die Vererbung rum.
Einfach ein tolles Forum

alpha
Ich auch

Danke auch an Leonidas

Dazu kannst Du auch das Borg-Pattern verwenden:
http://aspn.activestate.com/ASPN/Cookbo ... cipe/66531
fs111
http://aspn.activestate.com/ASPN/Cookbo ... cipe/66531
fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, darüber bin ich auch heute über die Newsgroup gestolpert. Sieht tatsächlich sehr interessant aus, das ist eine hübsche Methode um Config-Module zu vermeiden, was ich als Lösung nicht besonders elegant finde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice