[python] ukončení interpretu, zničení objektu
Petr Prikryl
PrikrylP na skil.cz
Úterý Červen 6 11:09:40 CEST 2006
Kurňa, byl jsem pomalý :-)
Jan Martinek
> [...]
> poslal jsem to jako bugreport a zde je vyjádření vývojářů:
> [...]
> This isn't really a bug, atleast not one that we plan to
> fix. The order in which modules get emptied is unspecified,
> and it can easily happen that things are gone when some
> destructor runs. Classes should be written to be resistent
> against this behaviour, e.g. by writing
>
> def __del__(self):
> self.__class__.b = 0 # name "M" might be gone
> already
> [...]
> Závěr je, že se nejedná o chybu, tedy alespoň ne takovou, kterou je v
> plánu opravit. Doporučuje se používat self.__class__.
>
> Děkuji všem za reakce. Zůstává mi ale pořád jedna nejasnost -
> jaktože to windowsářům tu výjimku nehází?
Dělá mi to přesně to samé.
===========================
class M:
b = 0
def __del__(self):
M.b = 1
a1 = M()
===========================
C:\tmp\a>python a.py
Exception exceptions.AttributeError: "'NoneType' object has no attribute 'b'" in
<bound method M.__del__ of <__main__.M instance at 0x00927E68>> ignored
pepr
Další informace o konferenci Python