[GvR]
I don't see why. __index__ has a slot because its primary use is to be called from C code, where slots add a slight performance advantage. __trunc__ doesn't get called from C AFAIK.
I thought the __trunc__ method only gets called from the C code for the trunc() function which is currently implemented with PyObject_CallMethod(number, "__trunc__", "") instead of a fast call to a slot.
Raymond
Raymond Hettinger wrote:
[GvR]
I don't see why. __index__ has a slot because its primary use is to be called from C code, where slots add a slight performance advantage. __trunc__ doesn't get called from C AFAIK.
I thought the __trunc__ method only gets called from the C code for the trunc() function which is currently implemented with PyObject_CallMethod(number, "__trunc__", "") instead of a fast call to a slot.
And if __trunc__ qualifies, what about __format__, which is similar? I'm not pushing for it, I just wonder how the decision is made.
Eric.
On Jan 29, 2008 11:34 AM, Raymond Hettinger python@rcn.com wrote:
[GvR]
I don't see why. __index__ has a slot because its primary use is to be called from C code, where slots add a slight performance advantage. __trunc__ doesn't get called from C AFAIK.
I thought the __trunc__ method only gets called from the C code for the trunc() function which is currently implemented with PyObject_CallMethod(number, "__trunc__", "") instead of a fast call to a slot.
I see.
Well, it would bounce around a bit but it would never execute Python byte codes. I don't see trunc() being all that performance critical. The cost of adding a new slot is considerable -- for one, *all* type objects become 4 (or 8) bytes longer.