Seite 1 von 1

Problem mit Klassen

Verfasst: Samstag 25. Februar 2006, 19:42
von Lampy
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

Verfasst: Samstag 25. Februar 2006, 19:43
von mitsuhiko
Weil das ein Klassenattribut ist. Wenn du es auf Objektebene setzen willst musst du die Zuweisung im Konstruktor (__init__) machen.

Verfasst: Samstag 25. Februar 2006, 20:33
von Lampy
Wie müsste ich den Quellcode dann abändern???

Verfasst: Samstag 25. Februar 2006, 21:01
von mitsuhiko

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')