【classmethod】

  绑定方法:特殊之处在于将调用者当中第一个参数自动传入
    1.绑定给对象的方法:调用者是对象,自动传入的是对象
    2.绑定给类的方法:调用者是类,自动传入的是类

 案例

 

【staticmethod=====静态方法

非绑定方法===>静态方法:
  没有绑定给任何人:调用者可以是类\对象,没有自动传参的效果
  函数体内即不需要对象,也不需要类传进来,我就是一个独立的功能

 案例

 1 class Mysql:
 2     def __init__(self, ip, port):
 3         # self.nid=
 4         self.ip = ip
 5         self.port = port
 6 
 7     @staticmethod  # 将下述函数装饰成一个静态方法
 8     def create_id():
 9         import uuid
10         return uuid.uuid4()
11 
12     @classmethod
13     def f1(cls):
14         ...
15 
16     def f2(self):
17         ...
18 
19 
20 obj1 = Mysql('1.1.1.1', 3306)
21 # Mysql.create_id()
22 # obj1.create_id()  # 类和对象都可以调用
23 print(Mysql.create_id())  # 非绑定  f88d1e08-e3b2-4acc-a807-ffad99260d4f
24 print(Mysql.f1)  # 绑定给类 <bound method Mysql.f1 of <class '__main__.Mysql'>>
25 print(obj1.f2)  # 绑定给对象

 

posted on 2024-01-05 20:28  认真的六六  阅读(3)  评论(0编辑  收藏  举报