[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