Op 2005-03-16, Jeff Shannon schreef <[EMAIL PROTECTED]>: > Bruno Desthuilliers wrote: > >> A few examples: > [...] >> - to get the length of a sequence, you use len(seq) instead of seq.len() >> - to call objects attributes by name, you use [get|set]attr(obj, name >> [,value]) instead of obj.[get|set]attr(name [,value]) > > These are both very consistent applications of a more functional style > of programming, rather than the pure object-oriented style you seem to > desire. It's not that Python is inconsistent; it's that Python is > consistently blending multiple paradigms in a way that uses the best > features of each and (mostly) avoids the worst pitfalls of each. > >> - if x is a class attribute of class A and a is an instance of A, >> a.x=anyvalue create a new instance attribute x instead of modifying A.x > > This is very consistent with the way that binding a name in any scope > will shadow any bindings of that name in "higher" scopes. It is the > same principle by which one is able to use the same name for a > function-local variable that is used for a global variable, without > destroying that global variable. Doing as you suggest would be far > *less* consistent, and would create a special case for class/instance > lookups where there is none now. >
Not entirely. The equivallent is imposible in function scope. If function scope would work exactly equivallent as the above the following should work a = 42 def f(): a = a + 1 print a print a And the result should be: 43 42 -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list