S
skip
I'm using Pyrex 0.9.5.1a. I have this simple Pyrex module:
cdef class Foo:
cdef public char attr
def __init__(self):
self.attr = 0
class Bar(Foo):
def __init__(self):
Foo.__init__(self)
self.attr2 = None
def mod(self):
self.attr = c'B'
f = Bar()
f.mod()
When I run Python and import it an exception is raised:
% python
Python 2.4.2 (#1, Feb 23 2006, 12:48:31)
[GCC 3.4.1] on sunos5
Type "help", "copyright", "credits" or "license" for more information. Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "badattr.pyx", line 16, in badattr
f.mod()
File "badattr.pyx", line 13, in badattr.Bar.mod
self.attr = c'B'
TypeError: bad argument type for built-in operation
If the mod() method is defined in the base class it works properly. Is this
a Pyrex bug or am I not allowed to modify cdef'd attributes in subclasses?
(Note that I want Bar visible outside the module, hence no "cdef".)
Thanks,
Skip
cdef class Foo:
cdef public char attr
def __init__(self):
self.attr = 0
class Bar(Foo):
def __init__(self):
Foo.__init__(self)
self.attr2 = None
def mod(self):
self.attr = c'B'
f = Bar()
f.mod()
When I run Python and import it an exception is raised:
% python
Python 2.4.2 (#1, Feb 23 2006, 12:48:31)
[GCC 3.4.1] on sunos5
Type "help", "copyright", "credits" or "license" for more information. Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "badattr.pyx", line 16, in badattr
f.mod()
File "badattr.pyx", line 13, in badattr.Bar.mod
self.attr = c'B'
TypeError: bad argument type for built-in operation
If the mod() method is defined in the base class it works properly. Is this
a Pyrex bug or am I not allowed to modify cdef'd attributes in subclasses?
(Note that I want Bar visible outside the module, hence no "cdef".)
Thanks,
Skip