property using a classmethod
Scott David Daniels
Scott.Daniels at Acm.Org
Thu Jul 9 13:40:58 EDT 2009
Emanuele D'Arrigo wrote:
> class MyClass(object):
> @classmethod
> def myClassMethod(self):
> print "ham"
> myProperty = property(myClassMethod, None, None)
>
> ... doesn't work and returns a TypeError: .... So, how do I do this?
> Ultimately all I want is a non-callable class-level attribute
> MyClass.myProperty that gives the result of MyClass.myClassMethod().
properties affect instances, and classes are instances of types.
What you want is a new metaclass:
class MyType(type):
@property
def demo(class_):
return class_.a + 3
class MyClass(object):
__metaclass__ = MyType
a = 5
print MyClass.a, MyClass.demo
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list