Problem mit Klassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lampy
User
Beiträge: 7
Registriert: Samstag 25. Februar 2006, 19:36

Samstag 25. Februar 2006, 19:42

Hi!

Ich habe folgendes Python-Skript:

Code: Alles auswählen

class MyClass:
	word = False
	messages = []
	def __init__(self, word):
		self.word = word
		del word
		if self.word == 'word1':
			self.messages.append('this is a good word')

instance1 = MyClass('word1')
print instance1.messages
del instance1

instance2 = MyClass('word2')
print instance2.messages
del instance2
Meine Frage: Wieso ist auch instance2.messages mit der Meldung versehen? Sollte das nicht leer sein, da die if-Abfrage in der Klasse negativ ist?

Wenn ich innerhalb der Klasse "if self.word == 'word1'" durch "if self.word == 'word2'" ersetze, also das ganze andersherum mache, ist instance1.messages nicht mit der Meldung versehen.

Was mache ich falsch???

Grüße
Markus
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Samstag 25. Februar 2006, 19:43

Weil das ein Klassenattribut ist. Wenn du es auf Objektebene setzen willst musst du die Zuweisung im Konstruktor (__init__) machen.
TUFKAB – the user formerly known as blackbird
Lampy
User
Beiträge: 7
Registriert: Samstag 25. Februar 2006, 19:36

Samstag 25. Februar 2006, 20:33

Wie müsste ich den Quellcode dann abändern???
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Samstag 25. Februar 2006, 21:01

Code: Alles auswählen

class MyClass(object):

    def __init__(self, word):
        self.word = word
        self.messages = []
        if self.word == 'word1':
            self.messages.append('this is a good word')
TUFKAB – the user formerly known as blackbird
Antworten