Hallo,
ich bin schon an dem Thema CONSTANTS gestolpert. Wie kann ich ein unveränderbare Variabel in einer Python-Klasse deklarieren?
Danke
Muchtar
unveränderbare string const
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Indem du sie GROSS schreibst. Anders als per Konvention (siehe PEP gibt es in Python keine konstanten Namen, nur konstante Werte.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Du könntest über ein Property nur Lesezugriff erlauben.Muchtar hat geschrieben:Wie kann ich ein unveränderbare Variabel in einer Python-Klasse deklarieren?
Code: Alles auswählen
class Foo(object):
def __init__(self):
self._value = 42
@property
def value(self):
return self._value
bar = Foo()
print(bar.value)
bar.value = 7
De facto kann man natürlich von außen den Wert ändern, wenn man direkt auf bar._value zugreift. Der führende Unterstrich ist allerdings ein eindeutiger Hinweis darauf, dass man die Finger von diesem Wert lassen sollte. Python forciert diese Kapselung im Gegensatz zu Java nicht technisch sondern setzt auf die Konvention.
Edit: cofi hat natürlich insofern recht, dass KONSTANTEN in Großbuchstaben geschrieben werden (sollten).
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Um es nochmal hervorzuheben: /me hat auch hier keine Konstante, sondern der Name ist _ueber dieses Interface_ nicht aenderbar. D.h. man kann zwar `obj.value` nicht aendern, dafuer aber `obj._value` mit demselben Effekt.
Man verlagert also nur das Problem - auch wenn man sehr deutlich macht, dass das nicht geaendert werden sollte, aber das tut auch die Konvention schon.
Man verlagert also nur das Problem - auch wenn man sehr deutlich macht, dass das nicht geaendert werden sollte, aber das tut auch die Konvention schon.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte