name 属性阻碍了这里,所以我的搜索没有成功。 我想要帮助的是将一个整数值乘以(求和,减去,...)一个来自属性的值(意思是@property):
class A:
__att = 3
@property
def att():
return __att
def test_method(self):
return 3*A.att
a = A()
x = a.test_method()
但我明白了
TypeError: unsupported operand type(s) for *: 'int' and 'property'
我理解消息的意思:它有点试图将一个int乘以一个方法名而不是它的结果,但是对于属性,它不应该是透明的吗? 我不明白我在这里错过了什么。
如果你想要类属性,你可以堆叠装饰器。
class A:
__att = 3
@classmethod
@property
def att(cls):
return cls.__att
def test_method(self):
return 3*A.att
该值可从
a.att
或 A.att
访问并在所有实例之间共享。该属性获得的“真实”类属性在 A._A__att
. 处被名称破坏
你正在调用
class(
att
)的A.att
属性:
return 3*A.att
作为类属性,
att
确实是一个property
.
您应该使用
实例(通过
att
)调用self
:
return 3*self.att