Dnia 12-12-2007, Śr o godzinie 15:10 +1300, Greg Ewing pisze: > > > CFunction does not define descr_get - why? > > > > I don't see why we should bother. > > I put forward a possible reason recently -- so that > Pyrex-defined functions could be used as methods > without requiring any special trickery.
My case doesn't use the method wrapper type anymore. Adding the appropriate descr_get to the generic wrapper of foreign objects, distinguishing a foreign function type, works well. I'm still surprised that CFunction differs from a Python function I must say that I find the current set of various wrappers and descriptors confusing: it doesn't seem to be described in one place; a type has up to four names (a C API name, the name in repr of the type, the name in repr of instances, and a name in types or builtin module); the repr names have words separated by " ", "-" or "_" seemingly at random; the sets of types available directly from C and from the types module differ from each other, and also differ by Python versions; and the types depend on technical details - for example the types of: MyClass.my_method str.upper str.__len__ are all different, even though they are all kinds of unbound methods. Examples of name inconsistencies (with common "Type" suffixes stripped): - a. CFunction b. builtin_function_or_method c. built-in function d. BuiltinFunction = BuiltinMethod - a. MemberDescr b. member_descriptor c. member d. MemberDescriptor - a. MethodDescr b. method_descriptor c. method d. - - a. Method b. method c. bound method d. Method - a. - (wrapper, but not exported) b. method-wrapper c. method-wrapper d. - - a. WrapperDescr b. wrapper_descriptor c. slot wrapper d. - -- __("< Marcin Kowalczyk \__/ [EMAIL PROTECTED] ^^ http://qrnik.knm.org.pl/~qrczak/ _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com