Loading

Python class 重载方法

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__为析构函数,对象被删除时调用
本例中可以通过输出信息观察析构的顺序

posted @ 2020-06-03 18:50  azureology  阅读(743)  评论(0编辑  收藏  举报