![](https://secure.gravatar.com/avatar/76825c36c7b6ffacac29fae9be486499.jpg?s=120&d=mm&r=g)
Feb. 20, 2006
4:19 p.m.
Greg Ewing wrote:
In other words, just because A inherits from B in Python isn't meant to imply that an A is a drop-in replacement for a B.
Hmm - this is interesting. I'm not arguing Liskov violations or anything ... However, *because* Python uses duck typing, I tend to feel that subclasses in Python *should* be drop-in replacements. If it's not a drop-in replacement, then it should probably not subclass, but just use duck typing (probably by wrapping). Subclassing implies a stronger relationship to me. Which is why I think I prefer using a wrapper for a default dict, rather than a subclass. Tim Delaney