[英]why we need property/getter/setter in python?
只想了解python中的property/getter/setter。 手头有两个问题,请您帮忙解答一下好吗? 谢谢。
通过几个线程,基本知识是我们可以使用 getter/setter 将一些属性设为私有,然后通过使用属性,我们可以像公共一样使用这些属性。 那我们为什么需要这个? 因为原来的__init__
是公开的
几个线程为我们提供了可以在 setter 中添加值约束的示例。 我的问题是为什么我们不像下面的代码那样直接在__init__
添加约束?
class test1:
def __init__(self, num):
if type(num) == int:
self.num = num
else:
raise TypeError('we need int')
您首先不需要它们 - 正如您所写的,您可以只使用实例变量:
def __init__(self):
self.the_answer = 42
但是,如果您稍后将实现更改为使用函数而不是变量,则可以将其更改为:
def __init__(self):
self._the_answer = None
@property
def the_answer(self):
if self._the_answer is None:
self._the answer = self.calculate_answer()
return self._the_answer
无需更改 API。 在这个例子中,它使用惰性求值来仅在访问时进行计算,但还有很多其他情况下这会有所帮助:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.