fortepianissimo wrote:
We all know that using __getattr__() we can compute an instance
variable on demand, for example:
class Foo:
def __getattr__ (self, name):
if name == 'bar':
self.bar = 'apple'
return self.bar
else:
raise AttributeError()
Then we can
f = Foo()
s1 = f.bar
s2 = f.bar # this uses the "cached" result
My question is can we do the same with class variables?
You can do this using a metaclass, e.g.:
py> class FooType(type):
... def __getattr__(self, name):
... if name == 'bar':
... self.bar = 'apple'
... return self.bar
... else:
... raise AttributeError('no attribute named %r' % name)
...
py> class Foo(object):
... __metaclass__ = FooType
...
py> Foo.bar
'apple'
However, you probably don't want to. What's your use case?
Steve
--
http://mail.python.org/mailman/listinfo/python-list