#12978: conditionally_defined decorator for methods and nested classes
-------------------------------------------------+-------------------------
Reporter: nthiery | Owner: jason
Type: enhancement | Status: new
Priority: major | Milestone: sage-
Component: misc | wishlist
Keywords: categories, | Resolution:
conditionally_defined | Merged in:
Authors: | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: | Stopgaps:
-------------------------------------------------+-------------------------
Comment (by SimonKing):
Replying to [comment:2 nthiery]:
> I want the same behavior as for a lazy attribute when the value is
> NotImplemented: in that case, the lookup proceeds in the super class
> hierarchy.
Do I understand correctly that you want the following behaviour:
{{{
#!python
class A(object):
def my_method(self, *args,**kwargs):
<default_implementation>
class B(A):
@conditionally_defined(f)
def my_method(self, *args,**kwargs):
<other implementation>
}}}
such that the default implementation is used when `f(self)` evaluates to
False (or an attribute error is raised if the the `super(B,B)` does not
define `my_method`), and uses the specialised "other implementation" if
`f(self)` evaluates to True?
I am pretty sure that one can use lazy_attribute behind the scenes, and
the job of `@conditionally_defined` would be to create this lazy
attribute, so that the user does not need to do it.
--
Ticket URL: <http://trac.sagemath.org/ticket/12978#comment:3>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.