On Sun, 09 Mar 2008 06:58:15 -0700, Guillermo wrote: > Okay, so I think I know where's the catch now -- you must rely on the > fact that the protocol is implemented, there's no way to enforce it if > you're expecting a parrot-like object. You'd try to call the speak() > method and deal with the error if there's no such method?
That's right. That's called "duck typing" -- if all you want is something that quacks like a duck, then it doesn't matter if it actually is a duck or not. Or if you prefer: if it quacks like a duck and swims like a duck, then it's close enough to a duck as to make no difference. Sometimes though, you need to check for a parrot up front. So I'd so this: try: something.speak except AttributeError: # No speak() method, so it can't be a parrot. do_something_else() else: # It seems to follow the parrot protocol. yummy_goodness = something.speak(5) assert "spam" in yummy_goodness.lower() -- Steven -- http://mail.python.org/mailman/listinfo/python-list