On 10/11/06, Bruno Desthuilliers <[EMAIL PROTECTED]> wrote:
> Theerasak Photha wrote:
> > On 10/11/06, Fredrik Lundh <[EMAIL PROTECTED]> wrote:
> >
> >> can be a lot better than a 30-level traceback that ends with a line
> >> looking something like
> >>
> >>      fnut.index(gah)
> >
> > Despite long experience with Perl, I am not a big follower of the
> > "goose_level: blah" method of error reporting...
> >
> >> also, checking for __method__ is, in general, not the right way to check
> >> if an object implements a given interface.
> >
> > I had a vague feeling it might not be a Right Thing(tm).
> > <flame-proof-underwear>I kind of miss
> > responds_to?</flame-proof-underwear>
>
> getattr(obj, name[,default]) is your friend. Remember that methods are
> just callable attributes.

I am familiar with getattr from the Introspection material in Dive
into Python of course.

Earlier in the thread we decided that using getattr is the Wrong
Way(tm) to decide whether an object has such and such operation
(respond_to?) because implementation details can hide this.

So I learned the best thing to do is Suck It And See (an electrical
joke, not a penis joke, BION) aka EAFP.

I just found out Ruby isn't much better in this regard:

class Foo
  def self.method_missing(meth, *args)
    puts meth
  end
end

Foo.bar()
puts Foo.respond_to?(:bar)

===>
bar
false

WTF?

-- Theerasak
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to