[Python-Dev] Class decorators (original) (raw)

Raymond Hettinger raymond.hettinger at verizon.net
Thu Mar 30 12:56:23 CEST 2006


[Jack Diederich]

Classes have a unique property in that they are the easiest way to make little namespaces in python.

[Greg Ewing]

For a while now, I've been wondering whether it would be worth having a construct purely for creating little namespaces, instead of abusing a class for this.

FWIW, I do not consider it an abuse to use a class to create a small namespace. Essentially that is what it is for -- it matters not whether the class has no methods.

What I've been wanting is the ability to easily define functions directly into an existing namespace:

class A:
    pass

def A.mymethod(x):
    return x+1

The latter definition is equivalent to:

A.mymethod = lambda(x): x+1

This ability to inject function definitions into an existing namespace is the one missing piece to enable clean use of Protocol OO techniques:

a = Object.copy()
b = a.copy()
def b.f(x):
    return x+1
c = b.copy()
def c.f(x):
    return x+2

Raymond



More information about the Python-Dev mailing list