Python becoming less Lisp-like

Steven Bethard steven.bethard at gmail.com
Tue Mar 15 09:51:07 EST 2005


Torsten Bronger wrote:
> paul at boddie.org.uk (Paul Boddie) writes:
>>
>>Well, I've been using Python for almost ten years, and I've
>>managed to deliberately ignore descriptors and metaclasses quite
>>successfully. I get the impression that descriptors in particular
>>are a detail of the low-level implementation that get a
>>disproportionate level of coverage because of the "hack value"
>>they can provide (albeit with seemingly inappropriate application
>>to certain problem areas).
> 
> I have exactly the same impression, but for me it's the reason why I
> feel uncomfortable with them.  For example, I fear that a skilled
> package writer could create a module with surprising behaviour by
> using the magic of these constructs.  I don't know Python well
> enough to get more specific, but flexibility almost always make
> confusing situations for non-hackers possible.
> 
> I know that such magic is inavoidable with dynamic languages, but
> descriptors will be used almost exclusively for properties, and
> therefore I think it would have been better to hard-wire properties
> in the interpreter rather than pollute the language with this sort
> of proto-properties (aka descriptors).

Certainly descriptors in the "wrong hands" could lead to confusing, 
unreadable code.  But Python is a "we're all adults here" language, and 
so we have to trust other coders to be responsible.  There are some very 
reasonable uses for descriptors which I don't believe are really 
confusing, for example the lazy property recipe:

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/363602

While writing too many descriptors is a code smell, the functionality is 
there as an implementation detail of new-style classes, and I'm quite 
happy that Python trusts me enough to expose this detail for when I need it.

STeVe



More information about the Python-list mailing list