On Thu, Nov 8, 2012 at 4:33 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > On Thu, 08 Nov 2012 20:34:58 +0300, Andriy Kornatskyy wrote: > >> People who come from strongly typed languages that offer interfaces >> often are confused by lack of one in Python. Python, being dynamic >> typing programming language, follows duck typing principal. It can as >> simple as this: >> >> assert looks(Foo).like(IFoo) > > How very cute. And I don't mean that in a good way. > > Why is this a class with a method, instead of a function that takes two > class arguments (plus any optional arguments needed)? > > looks_like(Foo, IFoo) > > is less "cute", reads better to English speakers, and much more Pythonic. > This isn't Java, not everything needs to be a class.
I disagree. Does that test whether Foo looks like IFoo, or IFoo looks like Foo? Of course, given the naming convention and the example, it's easy to work out, but when you're trying to *write* that from memory, it could be a nuisance to remember the proper order. This is already a wart of isinstance and issubclass. looks(Foo).like(IFoo), on the other hand, is crystal clear about which argument is which. -- http://mail.python.org/mailman/listinfo/python-list