程松 2020-06-03
Python面向对象的开发肯定离不开class,有点类似C语言的struct可以抽象描述对象并返回数据于方法。
例如,建立一个class描述笛卡尔坐标系中的点:
class point(): def __init__(self, x, y): self.x = x self.y = y self.norm = (x * x + y * y) ** 0.5 def __repr__(self): return ‘(%d,%d)‘%(self.x,self.y) def __add__(self, other): x = self.x + other.x y = self.y + other.y return point(x,y) def __sub__(self, other): x = self.x - other.x y = self.y - other.y return point(x,y) def __del__(self): print(self,‘has gone‘) a = point(2,3) b = point(1,1) print(a + b, a - b) #Output: #(3,4) (1,2) #(1,2) has gone #(3,4) has gone #(2,3) has gone #(1,1) has gone
其中__init__
为初始化方法,实例化时调用。__repr__
为显示方法,被打印时调用__add__
和__sub__
分别重载加法和减法__del__
为析构函数,对象被删除时调用
本例中可以通过输出信息观察析构的顺序