All pastes #557287 Raw Edit

gjc

public python v1 · immutable
·published 2007-06-10 22:44 UTC
rendered paste body
class Descr(object):    def __get__(self, obj, objtype):        if obj is None:            value =  objtype.__dict__['_foo']            print "__get__ (on class): ", value        else:            value =  obj.__dict__['_foo']            print "__get__: ", value        return value    def __set__(self, obj, value, objtype=None):        if obj is None:            print "__set__ (on class): ", value            objtype.__dict__['_foo'] = value        else:            print "__set__: ", value            obj.__dict__['_foo'] = valueclass CoolerSetAttr(type):  	def __setattr__(cls, name, value):   	  	if name in cls.__dict__ and hasattr(cls.__dict__[name], '__set__'):   	  	  	cls.__dict__[name].__set__(None, value, cls)   	  	else:   	  	  	type.__setattr__(name, value)class Foo(object):    __metaclass__ = CoolerSetAttr        _foo = 90    foo = Descr()    def __init__(self):        self._foo = 123f = Foo()print f.foof.foo = 456print f.fooprint "========================"print Foo.fooFoo.foo = 456print Foo.foo