Make a python object property behave like a classmethod
Using @property
is nice and peachy when you use the instance of the class, but what if you need to get that property without instantiating the class.
You can do that with @classmethod
(you'd say), but I want to use it as an attribute not as a method.
Without further ado, the hack:
class classproperty(property):
def __get__(self, instance, cls):
return classmethod(self.fget).__get__(instance, cls)()
class Foo(object):
foobar = 'This ... is ... FOOBAR!!!'
@classproperty
def bar(self):
return self.foobar
print Foo.bar