Commit dc9c9ea5 authored by Stefan Behnel's avatar Stefan Behnel

fix method calls on Cython generated Python classes

parent 68f891c8
...@@ -2483,7 +2483,7 @@ class UnboundMethodNode(ExprNode): ...@@ -2483,7 +2483,7 @@ class UnboundMethodNode(ExprNode):
def generate_result_code(self, code): def generate_result_code(self, code):
code.putln( code.putln(
"%s = __Pyx_PyMethod_New(%s, 0, %s); %s" % ( "%s = PyMethod_New(%s, 0, %s); %s" % (
self.result_code, self.result_code,
self.function.py_result(), self.function.py_result(),
self.class_cname, self.class_cname,
......
...@@ -416,9 +416,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): ...@@ -416,9 +416,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
code.putln("#if PY_MAJOR_VERSION >= 3") code.putln("#if PY_MAJOR_VERSION >= 3")
code.putln(" #define PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)") code.putln(" #define PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)")
code.putln(" #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, klass)") code.putln(" #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)")
code.putln("#else")
code.putln(" #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)")
code.putln("#endif") code.putln("#endif")
code.putln("#ifndef __stdcall") code.putln("#ifndef __stdcall")
......
...@@ -21,16 +21,12 @@ None ...@@ -21,16 +21,12 @@ None
[1, 2, (3, 4), 5, 6] [1, 2, (3, 4), 5, 6]
""" """
cdef extern from "Python.h":
ctypedef class __builtin__.list [ object PyListObject ]:
pass
class A: class A:
def append(self, x): def append(self, x):
print u"appending" print u"appending"
return x return x
cdef class B(list): class B(list):
def append(self, *args): def append(self, *args):
for arg in args: for arg in args:
list.append(self, arg) list.append(self, arg)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment