猿问

在classmethods上使用property()

在classmethods上使用property()

Helenr
浏览 572回答 3
3回答

慕盖茨4494581

有一个类有两个类方法(使用classmethod()函数)来获取和设置本质上是一个静态变量。我尝试使用property()函数,但它会导致错误。我能够在解释器中使用以下内容重现错误:class&nbsp;Foo(object): &nbsp;&nbsp;&nbsp;&nbsp;_var&nbsp;=&nbsp;5 &nbsp;&nbsp;&nbsp;&nbsp;@classmethod &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;getvar(cls): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;cls._var&nbsp;&nbsp;&nbsp;&nbsp;@classmethod &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;setvar(cls,&nbsp;value): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cls._var&nbsp;=&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;=&nbsp;property(getvar,&nbsp;setvar)我可以演示类方法,但它们不能作为属性:>>>&nbsp;f&nbsp;=&nbsp;Foo()>>>&nbsp;f.getvar()5>>>&nbsp;f.setvar(4)>>>&nbsp;f.getvar()4>>>&nbsp;f.varTraceback&nbsp;(most&nbsp;recent&nbsp;call&nbsp;last): &nbsp;&nbsp;File&nbsp;"<stdin>",&nbsp;line&nbsp;1,&nbsp;in&nbsp;?TypeError:&nbsp;'classmethod'&nbsp;object&nbsp;is&nbsp;not&nbsp;callable>>>&nbsp;f.var=5Traceback&nbsp;(most&nbsp;recent&nbsp;call&nbsp;last): &nbsp;&nbsp;File&nbsp;"<stdin>",&nbsp;line&nbsp;1,&nbsp;in&nbsp;?TypeError:&nbsp;'classmethod'&nbsp;object&nbsp;is&nbsp;not&nbsp;callable是否可以将property()函数与classmethod修饰函数一起使用?
随时随地看视频慕课网APP

相关分类

Python
我要回答