On Mar 13, 2009, at 10:24 AM, Carl Witty wrote: > On Fri, Mar 13, 2009 at 10:11 AM, Lisandro Dalcin > <[email protected]> wrote: >> On Fri, Mar 13, 2009 at 2:39 PM, Stefan Behnel >> <[email protected]> wrote: >>> So, can't we just require that ExtType.__new__() returns an >>> instance of >>> ExtType (or its subtypes)? >> >> As a first approach, it could be like that... >> >> ? Or is there a use case that would benefit from >>> returning arbitrary things? >>> >> >> Well, Python supports this, we could in case it is possible.... > > How about this? In the hypothetical future version of Cython that > allows overriding __new__, say that the overrides have to be declared > in the .pxd file, with > > cdef TYPE __new__(self, foo, bar) > > (where TYPE defaults to the class being declared, if omitted). So > when generating code, if the class doesn't override __new__, you know > that calling the class returns an instance; if the class does override > __new__, then the return type is explicitly given. This could be a > parent class, for my use case where I want to return an instance of a > sibling class; or it could be "object", if anybody ever has a use case > for having __new__ return an arbitrary object.
+1. This will make it possible to optimize the common case while providing (future) flexibility. - Robert _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
