绑定方法:将调用者本身作为第一个参数自动传入

  1. 绑定给对象的方法,类中默认都是绑定给对象的方法,绑定给对象是因为要用到对象的一些东西
  2. 绑定给类的方法,classmethod 将其下面的方法装饰成绑定给类的方法,绑定给类是因为要用到类的一些东西
  3. @staticmethod 将其下面的方法装饰成非绑定方法,类和对象都可以调用它,此时没有绑定方法自动传入参数的效果了,需要完整的传入参数

类中的方法,要么绑定给对象,要么绑定给类,不绑定给这两个的方法一般要放到类外面,但是还想把这个方法集成到类中,就要用@staticmethod

classmethod提供了一种新的创建对象的方法

from mysql_conf import IP,PORT		#IP,PORT是两个常量

class Mysql:
    def __init__(self,ip,port):
        self.ip=ip
        self.port=port
        
    @classmethod    #将from_conf装饰成绑定给类的方法,自动传入的是类
    def from_conf(cls):
        return cls(IP,PORT)
    
    @staticmethod
    def create_id():
        import uuid
        return uuid.uuid4()
    
obj1=Mysql('1.1.1.1',3307)
print(obj1.__dict__)
obj2=Mysql.from_conf()	#通过调用类的绑定方法来创建新对象
print(obj2.__dict__)

'''
{'ip': '1.1.1.1', 'port': 3307}
{'ip': '127.0.0.1', 'port': 3306}
'''