python---面向对象6--静态方法

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

 

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