En utilisant la propriété() sur classmethods

J'ai une classe avec deux méthodes de la classe (à l'aide de la classmethod fonction ()) pour l'obtention et la configuration de ce qui est essentiellement une variable statique. J'ai essayé d'utiliser la propriété() fonction avec ceux-ci, mais il en résulte une erreur. J'ai été en mesure de reproduire l'erreur avec les éléments suivants dans l'interpréteur:

class Foo(object):
    _var = 5
    @classmethod
    def getvar(cls):
        return cls._var
    @classmethod
    def setvar(cls, value):
        cls._var = value
    var = property(getvar, setvar)

Je peux démontrer les méthodes de la classe, mais ils ne fonctionnent pas comme des propriétés:

>>> f = Foo()
>>> f.getvar()
5
>>> f.setvar(4)
>>> f.getvar()
4
>>> f.var
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: 'classmethod' object is not callable
>>> f.var=5
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: 'classmethod' object is not callable

Est-il possible d'utiliser la propriété() fonction avec classmethod décorées fonctions?

InformationsquelleAutor Mark Roddy | 2008-09-24