Serhiy Storchaka added the comment:

* If a type only defines tp_fastcall: tp_fastcall is always use (tp_call uses 
the wrapper)

Is tp_call set to the wrapper rather then inheriting? What if tp_call is 
defined in a superclass?

> * If a type defines tp_call and tp_fastcall, PyObject_Call() uses tp_call 
> whereas _PyObject_FastCallDict() uses tp_fastcall.

I would consider this as a bug. It would be weird if different ways of calling 
cause executing different code.

What about dynamically changed Python types? What if you set or delete the 
__call__ attribute of Python class?


Python tracker <>
Python-bugs-list mailing list

Reply via email to