__dict__ field, so you cannot assign arbitrary attributes to
them. That said, it is just a few lines to implement attribute
assignment, as illustrated by the following notebook session:
{{{
%cython
cdef class X:
cdef object __dict__
def __init__(self):
self.__dict__ = {}
def __setattr__(self, attr, val):
self.__dict__[attr] = val
def __getattr__(self, attr):
try:
return self.__dict__[attr]
except KeyError:
raise AttributeError, "object has no attribute '%s'"%attr
///
}}}
{{{
x = X()
///
}}}
{{{
x.a = 5
///
}}}
{{{
x.a
///
5
}}}
{{{
x.b
///
Traceback (most recent call last): x.b
File "/Volumes/HOME/sage-stable/local/lib/python2.5/", line 1, in <module>
File "/Volumes/HOME/.sage//spyx/sage20/sage20_0.pyx", line 14, in sage20_0.X.__getattr__
raise AttributeError, "object has no attribute '%s'"%attr
AttributeError: object has no attribute 'b'
}}}
See About this document... for information on suggesting changes.