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)

 

posted @ 2022-03-07 16:50  WJ-HAHA  阅读(31)  评论(0编辑  收藏  举报