nach längerer Python-Abstinenz wollte ich mal wieder ganz langsam anfangen und stehe hier vor einem Problem, bei dem ich das Gefühl habe, Python will mich verarschen - oder ich habe zufällig irgendeinen Bug gefunden. Anders kann ich mir das Verhalten von Python nicht erklären.
Ich habe hier folgenden Code rumliegen:
Code: Alles auswählen
class Karte:
anzahl = 0
def __init__(self):
Karte.anzahl += 1
def __del__(self):
Karte.anzahl -= 1
def __str__(self):
return str(Karte.anzahl)
card = Karte()
print card
Code: Alles auswählen
Exception AttributeError: "'NoneType' object has no attribute 'anzahl'" in <bound method Karte.__del__ of <__main__.Karte instance at 0x7f75d282e5f0>> ignored
Code: Alles auswählen
test2 = Karte()
print test2
Was zum Teufel ist da los? Wie kann es sein, dass der Variablenname "card" diesen seltsamen Fehler wirft, nicht aber der Variablenname "test2"? Nur durch Zufall habe ich herausgefunden, dass "test2" keinen Fehler wirft - wenn die Variable stattdessen z.B. "bliblablubb1" nehme, bekomme ich wieder den AttributeError, aber bei "bliblablubb15" (eine 5 hintendran) hingegen wieder nicht...
Auch interessant: Wenn ich die Methode "__del__" aus der Klasse entferne, erhalte ich diesen Fehler nicht - unabhängig vom Variablennamen. Leider bin ich auf die "__del__"-Methode angewiesen, da ich jederzeit sehen muss, wie viele Variablen die Klasse bereits nutz(t)en...
Tjoar... Frage: Bekommt ihr zufällig denselben Fehler, wenn ihr diesen Schnipsel-Code ausführt? Falls ja: Woran könnte es liegen? Ich habe leider keinen Zweit-PC oder -Betriebssystem zur Hand, auf dem ich das gerade testen könnte...
Schonmal im Voraus Danke für jede Hilfe! Verwendete Python-Version ist 2.7.2 unter Archlinux 64 bit; Python wurde direkt als Paket vom Distributor installiert...
EDIT: Es wäre auch super, wenn sich jemand melden würde, bei dem der Fehler NICHT auftritt. Dann weiß ich, dass mit meinem Computer irgendwas nicht stimmt^^.