问题描述
我想知道,如何做像pygame.Rect这样的python类。我的意思是如何创建一个类,当您更改一个变量时,其他变量也会更改(使用 pygame Rect,您可以更改例如变量 x 和自动变量 centerx 更改以适应)
解决方法
你说的是属性 setter 和 getter!这是一个带圆圈的玩具示例:
import math
class Circle:
def __init__(self,radius):
self._radius = radius
self.update_from_radius()
@property
def radius(self):
return self._radius
@radius.setter
def radius(self,val):
self._radius = val
self.update_from_radius()
def update_from_radius(self):
self.area = self._radius*self._radius*math.pi
self.circumference = 2*self._radius*math.pi
self.diameter = 2*self._radius
c = Circle(4)
print(c.area) >>> 50.26548245743669
c.radius = 8
print(c.area) >>> 201.06192982974676
如果您想了解更多信息,请查看here,它给出了很好的解释。