Message323293
Usually, tp_new==NULL means that __new__ is inherited, but not always. Here is the comment from typeobject.c:
/* The condition below could use some explanation.
It appears that tp_new is not inherited for static types
whose base class is 'object'; this seems to be a precaution
so that old extension types don't suddenly become
callable (object.__new__ wouldn't insure the invariants
that the extension type's own factory function ensures).
Heap types, of course, are under our control, so they do
inherit tp_new; static extension types that specify some
other built-in type as the default also
inherit object.__new__. */
So my current solution is to explicitly set __new__ to the common helper function that raises TypeError in that case.
---
Thanks a lot for your comments and ideas. In truth, I feel a little overwhelmed and definitely need further guidance for this issue. |
|
Date |
User |
Action |
Args |
2018-08-08 18:15:06 | Vadim Pushtaev | set | recipients:
+ Vadim Pushtaev, ncoghlan, serhiy.storchaka, ppperry |
2018-08-08 18:15:06 | Vadim Pushtaev | set | messageid: <1533752106.46.0.56676864532.issue34284@psf.upfronthosting.co.za> |
2018-08-08 18:15:06 | Vadim Pushtaev | link | issue34284 messages |
2018-08-08 18:15:06 | Vadim Pushtaev | create | |
|