The vtable interface, at the moment, covers the operators you'd expect to be able to override--assignment, simple math, most string operations, conversion duties, and suchlike things. So this code:
a = b + c
would call the add vtable method for b, and the assign vtable method for a,
But in Python, this is not an operation on a at all! It's an operation on the namespace containing a, and a cannot override it. I'm sure your VM design can accommodate this, but it points out the fundamental difference between the languages in their ideas of what a "variable" is. Python has at least two types of namespaces in this context: some namespaces (like module globals) are dictionaries, others (like function locals) have mapped the variable names to an array of object references. --Guido van Rossum (home page: http://www.python.org/~guido/)