Some Differences
Smalltalk and Python are have very similar object models, close enough that a design rendered in Smalltalk could be transliterated to Python without serious damage to the original object model. The key issue is that Python supports "protocol based" polymorphism, which puts it in the same class as Smalltalk, Ruby and Perl (amoung others). Java, C++, Eiffel and other OO languages tend to use "inheritence based" polymorphism, where objects must inherit from a common anscestor before they can be used polymorphically. Python only requires that the objects reponds to the same protocol (i.e. same method names with compatible arguments and semantics). This greatly simplifies a lot of software.
I can think of two areas Where Smalltalk and Python differ: In Smalltalk, everything is uniformly an object and the only way to interact with an object is by sending it a message. Python is working on unifying its type system, but there still remains some distinctions between different "kinds" of objects. (I don't follow Python close enough to speak in detail on these differences, and the differences are eroding as Python moves toward 3.0). In addition, there are many ways to interact with an object in Python other than just sending a message, function calls and direct access to its attributes come to mind.
There are also some differences in their meta-class models. Or at least I think so. Python's meta-classes have been evolving over time and I'm not sure what the current version is like. But this has an effect on common things like how class variables are handled as well as more esoteric things like dynamic proxies and autogenerating code. (I would be interested in a follow-up discussion that clearified some of these issues).
Oh, another difference I just thought of is the attitude toward closures. Smalltalk uses closures (blocks) extendsively as a building block of the language. Python has lambdas, but they are not full closures and furthermore their use is not gently discouraged by the Python community.
So, in the big picture Smalltalk and Python are very similar, but in small details there are some differences.
Was this helpful?
--
-- Jim Weirich jweirich@one.net [link|http://onestepback.org|http://onestepback.org]
---------------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct,
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)