On Jul 19, 2009, at 1:31 AM, Mike Meyer wrote:
On Sun, 19 Jul 2009 11:28:37 +1000 Steven D'Aprano <steve@pearwood.info> wrote:
for card in cards: if hand.count(card) == 2: print('You have a pair.') Why would a class with unique=True have a count() method?
So that you can write code that doesn't care which of the various flavors of collection it gets passed, but will work on them anyway.
It supports a property of classes in OO programming called "polymorphism". It's a good thing. That python's collections don't have it has always been a minor wart, and it gets bigger as we get more types of collections.
For example ints don't support slicing and that is not an omission of polymorphism, there is no sense in having that on them. A dict or set having a count method would make no sense either. This has nothing to do with polymorphism. add on lists or append on sets could be discussed (maybe append on sets makes more sense as they already have pop), but adding count in dict or set would not be pragmatic. -- Leonardo Santagada santagada at gmail.com