下面是一个简单的例子
Class rectangle:
Def __init__(self,length,width):
Self.length=length
Self.width=width
Self.area=length*width
这个类看似没什么问题,但是暴露出来了area这个属性。因为本来area是由长和宽决定不应该随意修改
解决方法的话,第一种可以在类里新加一个类方法。单独求面积,但是复杂的点在于如果原本代码量就很大,那么这个方法就修改起来很麻烦很复杂。
为了避免大量修改,我们可以使用@property修饰符,一个类里定义的方法一旦被@property修饰,你可以像使用属性一样使用这个方法。其实可以理解成,它是可以把一个类里的方法伪装成了这个类的一个属性。
Class rectangle:
Def __init__(self,length,width):
Self.length=length
Self.width=width
Self.area=length*width
@property
Def area(self):
Return self.length * self.width
R = rectangle(3,4)
Print(rectangle.area)#与之前调用类属性一样