我有以下课程:
class temp_con():
def __init__(self):
self.t = 0
@property
def t(self):
return self.t
@t.setter
def t(self,value):
self.t = value
我需要用它来比较一个遵循这个逻辑的数字:
^{pr2}$但是我得到了一个错误:
Type error: unsupported operand type for -: 'property' and 'int'<
我试过int(temp_con.t)
和{
如何将属性用作int?在
您需要为属性及其包装的属性使用单独的名称。一个好的约定是使用前缀为
_
的属性名作为属性名。在然后可以访问类的实例上的属性。在
^{pr2}$为了使用属性,您需要一个类的实例,并且,正如其他答案中所指出的,您需要为您的对象变量使用不同的名称。尝试:
因此,要访问属性的值而不是属性函数,必须通过
my_temp_con.t
来访问它。在你在类上访问t,而不是类的对象。在
尝试:
在您的代码temp_con.t返回property对象,它包装了您在类代码中定义的getter(和setter),但它不执行它。在
更新:(备注:读两遍) 你的代码还有另一个问题。首先(好吧,这在代码中是第二个,但它会首先发生)您定义getter
t
,然后用self.t = 0
覆盖它。结果,您将获得(作为t
)属性作为类成员访问(在您的示例中发生),值0
作为对象的成员。在相关问题 更多 >
编程相关推荐