Thanks for the explanation! I haven't had a chance to try installing
the patch (I got caught up taking care of some other side-projects),
however I can't thank you enough for the help.

I now have a new question (@Robert): if the Expression class wasn't
made with subclassing in mind, how did the makers of sage envision
users to build their own classes (while still utilizing expressions)?

I'm new to OOP, but the impression I'm (now) under is that without
Burcin's patch, we have to do something like:

class newObject():
    def __init___(self, expression, *variables, **attributes):
        [var('{0}'.format(variable)) for variable in
variables]
        self.exp = expression
        for options in attributes.items():
            self.attr[option] = attributes(option)
?

Thanks,

Steven

On Jul 26, 3:15 pm, Burcin Erocal <bur...@erocal.org> wrote:
> On Mon, 25 Jul 2011 08:03:04 -0700 (PDT)
>
> Steven Pollack <stevenlawrencepoll...@gmail.com> wrote:
> > Is the syntax for this class
>
> > t = new_exp(SR, symbolic_expression)?
>
> > So that sage: t returns symbolic_expression?
>
> t is an instance of new_exp, which inherits from Expression. The value
> of the internal GiNaC object stored in both is determined by the second
> argument.
>
> You could define other member functions or store attributes in your
> class. Though you need to take care what happens to the attributes
> when you do any arithmetic.
>
> sage: class new_exp(Expression):
>     def __init__(self, parent, value, attribute):
>         self.attr = attribute
>         super(self.__class__, self).__init__(parent, value)
> ....:        
> sage: t = new_exp(SR, x, 2)
> sage: t
> x
> sage: t.attr
> 2
> sage: t.new_method(5)
> x - 5
> sage: u = t+t
> sage: u.new_method(5)
> 2*x - 5
> sage: u.attr
> <snip>
> AttributeError: 'new_exp' object has no attribute 'attr'
> sage: type(u)
> <class '__main__.new_exp'>
> sage: u
> 2*x
> sage: v = u/2
> sage: v.new_method(5)
> x - 5
> sage: v.attr
> <snip>
> AttributeError: 'new_exp' object has no attribute 'attr'
>
> > Second, I'm not entirely sure I understand how this patch was made,
> > let alone how to install it. I skimmed over
> >http://www.sagemath.org/doc/developer/patching_spkgs.htmland
> >http://www.sagemath.org/doc/developer/producing_spkgs.html#chapter-spkg
> > but found the whole thing to be a bit over my head (I'm a newbie,
> > sorry).
>
> > Is there a series of instructions you could provide me for the
> > installation of your patch? I'm sure you're very busy, so I really do
> > appreciate the effort.
>
> You need to look at a different section of the guide:
>
> http://sagemath.org/doc/developer/walk_through.html
>
> Here is a quick summary:
>
> - Go to your SAGE_ROOT, the base directory of your sage installation
> - Go to the directory with the sage library sources
>    cd devel/sage
> - import the patch into a patch queue
>    hg qimport <URL_of_patch>
> - apply the patch
>    hg qpush
> - go back to SAGE_ROOT
>    cd ../..
> - build the library with changes
>    ./sage -b
> - start Sage and enjoy
>    ./sage
>
> Cheers,
> Burcin

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

Reply via email to