Guillermo a écrit : > Mamma mia! My head just exploded. I've seen the light. > > So you only need to ·want· to have a protocol? That's amazing... Far > beyond the claim that Python is easy. You define protocols in writing > basically! Even my grandma could have her own Python protocol. > > Okay, so I think I know where's the catch now -- you must rely on the > fact that the protocol is implemented,
Indeed. But even with static declarative typing à la Java, you must rely on the fact that the protocol is *correctly* implemented (what about having file.close sending mails to all your contacts and then rebooting the computer ?-). IOW, at some point, you have to trust the coder anyway. > there's no way to enforce it if > you're expecting a parrot-like object. Yes there is: > You'd try to call the speak() > method That's it. > and deal with the error if there's no such method? Either catch the AttributeError and raise a TypeError or ValueError (or some more specific one) instead, or just let the AttributeError propagate - whichever makes more sens given the context. I'd say the default would be to catch the AttributeError and raise a TypeError instead (that's at least what len() does when passed an unsized object). -- http://mail.python.org/mailman/listinfo/python-list