Matz on Python OO #
On his journal, Matz has illustrated some differences between Ruby classes and Python classes, running some examples through the Python interpreter. He largely dwells on the syntax for retrieving a method list for an integer type. I think he’s awfully proud of Ruby’s elegance in this matter, which is cool with me.
In Python:
>>> (1).__class__.__dict__.keys() ['__int__', '__ror__', '__rtruediv__', ... ]
In Ruby:
>> 1.methods => ["%", "between?", "method", "send", ... ]This just a few days after he mentioned using the encoding pragma from Python’s PEP 263 in a future release of Ruby.
flgr
I wonder why he is not just doing
dir(1)
instead.I think he’s right in that it’s hard to find an equivalent to
1.class.instance_methods(false)
, though.gabriele
IIRC dir can be tricked in python. But maybe dict can be tricked too. All that stuff like setattr/getattr/getattribute/slots may be related, but I may be wrong
Olifante
The problem with dir() is that it returns both the attributes AND the methods of the object passed to it. This stems from the fact that in fact methods actually ARE attributes in Python – they just happen to be attributes whose value is a function.
Instead of being called object-oriented, Python should perhaps be called dict-oriented, as it uses dicts and functions to simulate object-orientation. Actually it’s a pretty neat trick – once you grok this a lot of Python’s behaviour makes sense, but I think that Ruby’s real object-orientation is more useful.
Comments are closed for this entry.