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

  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}
'''