Python:如何将 int 与 @property 的值相加/相乘

问题描述 投票:0回答:2

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乘以一个方法名而不是它的结果,但是对于属性,它不应该是透明的吗? 我不明白我在这里错过了什么。

python python-decorators
2个回答
2
投票

如果你想要类属性,你可以堆叠装饰器。

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
.

处被名称破坏

1
投票

你正在调用

class
att)的
A.att
属性:

return 3*A.att

作为类属性,

att
确实是一个
property
.

您应该使用

实例
(通过att)调用
self

return 3*self.att
© www.soinside.com 2019 - 2024. All rights reserved.