Yes, some of Python's object support is by convention rather than forced on you by the language, but you have to appreciate that Python is ment to be a lighter-weight language than, say Java, from a syntax point of view. If you want strict OO features, use Smalltalk. If you want to write something quick and dirty, use a scripting language. If you want a good balance between those two extremes, Python makes a good compromise.