On Wed, May 2, 2012 at 12:08 AM, P Purkayastha <[email protected]> wrote:
> Currently, in my Sage (python) code, I used lazy_attribute to achieve this.
> I tested the computation using cython and without lazy attribute and it
> speeds up by a factor of about 3 compared to the python code. So, I am
> looking for something that can defer the computation so that instantiating
> the class is fast.

Like Simon mentioned, you can add getattr and setattr support:


from sage.misc.all import lazy_attribute
cdef class A:
       cdef public object __dict__
       def __init__(self):
               self.__dict__ = {}

       def __getattr__(self, attr):
           try:
               return self.__dict__[attr]
           except KeyError:
               raise AttributeError

       def __setattr__(self, attr, value):
           self.__dict__[attr] = value

       @lazy_attribute
       def a(self):
               # moderate amount of computation gives the answer 42
               return 42

--Mike

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to