【发布时间】:2020-09-01 14:53:09
【问题描述】:
我想从其他属性计算一个类中的一个属性。
我希望这个属性是私有的,所以我想把它变成一个属性。
我知道仍然需要在类的 init 块中调用一个属性,但是我没有找到一种优雅的方式来编写它。
一些丑陋的代码可以满足我的需要:
class ABC:
def __init__(self, t=0):
self.attrA = t
self._attrB = None
@property
def attrB(self):
return self._attrB
@attrB.setter
def attrB(self, value):
self._attrB = 2*self.attrA
obj = ABC(10)
print(obj.attrB)
问题:如何避免在 init 中使用虚拟的“无”值声明 attrB?
编辑到以前的帖子:
-
1234563 attrB 每次被调用都是不行的
我知道缓存属性调用也是一种选择,但是没有更简单的方法是拥有一个真实的属性吗?
【问题讨论】:
-
附带说明,
ABC不是一个好的类名称,即使是在一个简单的示例中,因为abc模块和abc.ABC... 甚至 'A` 更好。 -
有道理会记住的:)
标签: python properties attributes