Sulsa wrote:
Mam klase A po ktorej dziedziczy B i jesli w destruktorze klasy B
wywolam:
self.__class__.__bases__[0].__del__(self)
to wszytkos jest ok, i destruktor klasy a jest wywolywany, jesli
natomiast napisze: A.__del__(self) to otrzymuje nastepujacy wyjatek:
Exception exceptions.AttributeError: "'NoneType' object has no
attribute '__del__'" in <bound method B.__del__ of <__main__.B instance
at 0x2b025d04a830>ignored
czemu tak sie dzieje?
??
Cześć,
Właściewie to nie rozumiem sensu pytania. :)
Ja zrobiłem tak:
class A:
def __del__(self):
print "Delete A"
class B(A):
def __del__(self):
A.__del__(self)
print "Delete B"
potem sworzyłem instancję: InstanceB=B()
potem uruchomiłem destruktory: del(InstanceB) i moim oczom ukazał się
komunikat:
Delete A
Delete B
1) Czy atrybut A.__del__(self) zosatł zdefiniowany przez Ciebie?? Domyślny
nie jest brany pod uwagę. Sprawdziłem.
class A:
pass
class B(A):
def __del__(self):
A.__del__(self)
print "Cośtam"
potem
insta=B()
del(insta) daje Exception exceptions.AttributeError: "class A has no
attribute '__del__'" in <bound method B.__del__ of <__main__.B instance at
0xb7cf20cc>ignored
PS.: Python 2.4.4c1