[Python-Dev] Proper initialization of structs
Christian Heimes
lists at cheimes.de
Fri Oct 31 00:43:46 CET 2008
Alexandre Vassalotti wrote:
> And that is exactly the reason why, the _pickle module doesn't use
> __new__ for initialization. Doing any kind of argument parsing in
> __new__ prevents subclasses from customizing the arguments for their
> __init__.
>
> Although, I agree that __new__ should be used, whenever it is
> possible, to initialize struct members.
You are missunderstanding me. I want everybody to set the struct members
to *A* sensible default value, not *THE* value. Argument parsing can
still happen in tp_init. tp_new should (or must?) set all struct members
to sensible defaults like NULL for pointers, -1 or 0 for numbers etc.
Python uses malloc to allocate memory. Unless you are using debug builds
the memory block is not initialized. In both cases the block of memory
isn't zeroed. You all know the problems caused by uninitialized memory.
Christian
More information about the Python-Dev
mailing list