为了账号安全,请及时绑定邮箱和手机立即绑定

在classmethods上使用property()

在classmethods上使用property()

Helenr 2019-08-24 15:44:50
在classmethods上使用property()
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

有一个类有两个类方法(使用classmethod()函数)来获取和设置本质上是一个静态变量。我尝试使用property()函数,但它会导致错误。我能够在解释器中使用以下内容重现错误:

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

我可以演示类方法,但它们不能作为属性:

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

是否可以将property()函数与classmethod修饰函数一起使用?


查看完整回答
反对 回复 2019-08-24
  • 3 回答
  • 0 关注
  • 571 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信