On Thu, Mar 31, 2016 at 7:11 PM, Justin C. Walker <jus...@mac.com> wrote:

>
> On Mar 31, 2016, at 15:37 , Vincent Delecroix wrote:
>
> > On 31/03/16 18:22, Johannes wrote:
> >> On 31.03.2016 23:08, Justin C. Walker wrote:
> >>> 2. Is there a way to tell, when hasattr(X, "foo") returns True,
> >>> whether "X.foo" can be called?
> >>
> >> X.foo and x.foo.__call__ is None
> >
> > !?
> >
> > The only way to go here is
> >
> > if callable(X.foo):
> >    print "X.foo is callable"
>
> Thanks for the all the responses.  They help, but I'm sensing confusion
> (at least on my part):
>
> sage: Q
> Univariate Quotient Polynomial Ring in xbar over Rational Field with
> modulus x^2
>
> sage: hasattr(Q,"is_integral_domain")
> True
>
> sage: Q.is_integral_domain
> <built-in method is_integral_domain of
> PolynomialQuotientRing_generic_with_category object at 0x19c8dcec0>
>
> sage: callable(Q.is_integral_domain)
> True
>
> sage: Q.is_integral_domain()
> ---------------------------------------------------------------------------
> NotImplementedError                       Traceback (most recent call last)
> <ipython-input-48-73145f43c3d0> in <module>()
> ----> 1 Q.is_integral_domain()
> NotImplementedError:
>
> Help and corrections much appreciated, as always.
>

Just because a method is callable doesn't mean that it can't raise
exceptions, including NotImplementedErrors.  There's no reasonable way to
tell if a method will raise an exception or not without calling it.
David

>
> Thanks!
>
> --
> Justin C. Walker
> Director
> Institute for the Enhancement of the Director's Income
> --
> Fame is fleeting, but obscurity
>    just drags on and on.      F&E
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-devel+unsubscr...@googlegroups.com.
> To post to this group, send email to sage-devel@googlegroups.com.
> Visit this group at https://groups.google.com/group/sage-devel.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to