python---面向对象5--魔术方法
1 class Point: 2 """ 3 表示平面坐标系里的一个点 4 """ 5 name = '点' # 类属性 6 7 # 魔术/特殊方法,有特殊功能的方法,都以双下划线开头 8 # __init__, 初始化方法,构造方法,对象属性一般定义在这里 9 # 当创建对象的时候它会被自动调用,创建对的对象会被传递给第一个参数 10 # 会接受类名括号里传入的参数(从第二个参数开始传 ) 11 def __init__(self, x, y): 12 print('我执行了这一段初始化代码') 13 self.x = x 14 self.y = y 15 16 # __str__ 17 # 定义对象被print的时候的字符串形式 18 # print一个对象的时候,实际上会调用这个对象的__str__方法,打印这个方法的返回值 19 def __str__(self): 20 return '({}, {})'.format(self.x, self.y) 21 22 # 定义在类里的普通函数就是对象方法 23 def my_point(self): 24 print('({}, {})'.format(self.x, self.y)) 25 26 def distance(self, p2): 27 return ((self.x - p2.x) ** 2 + (self.y - p2.y) ** 2) ** 0.5 28 29 # 类方法 30 # 在类中通过装饰器classmethod可以把一个函数定义为类方法 31 # 给Point类定义一个类方法,用来返回坐标原点 32 @classmethod 33 def base_point(cls): 34 bp = cls() 35 bp.x = 0 36 bp.y = 0 37 return bp 38 39 40 # __init__ 41 p = Point(x=1, y=2) 42 p.my_point() 43 44 45 # __str__ 46 print(p)