[Python-ideas] ML Style Pattern Matching for Python

Steven D'Aprano steve at pearwood.info
Sun Dec 19 22:26:26 CET 2010


Eike Welk wrote:

> My positive attitude towards this syntax comes from the only weakness that 
> Python IMHO has: You can't easily see which data attributes an instance has. 

What's wrong with dir(obj) and vars(obj)?


 >>> class Spam:
...     x = 1
...     def __init__(self):
...             self.y = 2
...
 >>> obj = Spam()
 >>> vars(obj)
{'y': 2}
 >>> dir(obj)
['__doc__', '__init__', '__module__', 'x', 'y']

Python has *awesome* self-inspection abilities -- there's very little 
you can't easily find out about an object, so much so that people 
sometimes complain that you can't really hide information from the 
caller in Python -- there are no truly private attributes, only private 
by convention. See also the inspect module.


> This information is hidden in __init__, and sometimes elsewhere. I think a 
> mechanism like slots should be the norm, and dynamism the exception.

Such a language would no longer be Python. Perhaps it will be a better 
language, perhaps a worse one, but it won't be Python.


By the way, __slots__ is intended as a memory optimization, not as a 
mechanism for defeating Python's dynamic nature.



-- 
Steven



More information about the Python-ideas mailing list