绑定方法
绑定到对象的方法
定义:凡是在类中定义的函数(没有被任何装饰器修饰),都是绑定给对象的,就是给对象用的。
特点:obj.method() 自动把obj作第一个参数传入,因为method的逻辑就是要处理这个obj
tips: 对象的绑定方法,类也可以调用,但是必须把对象传入作为第一个参数。
绑定到类的方法
定义:凡是在类中定义的,被@classmethod装饰的函数,就是绑定到类的方法。
特点:cls.method() 自动把cls作为第一个参数传入。
应用:定制实例化。不管是对象还是类调构造器 __init__ 来初始化实例,都需要手动传入参数,下面我们通过类的绑定方法来实现‘自动’传参:
'''settings.py内容:
IP = '127.0.0.1'
PORT = 3306
'''
class MySQL:
def __init__(self,ip,port):
self.ip = ip
self.port = port
@classmethod
def from_conf(cls): # 在这里定制自己的实例化
import settings
return cls(settings.IP, settings.PORT) # 其实并没有自动传值一说,只是在这一步传入了。
m = MySQL.from_conf() # 似乎就可以不用传值创建对象了。
print(m.ip, m.port)
非绑定方法
定义:凡是在类中定义的,被@staticmethod装饰的函数,就是非绑定方法。
特点:相当于一个普通函数,obj.func() 或 cls.func() 类和对象都可以调用,不会自动传值,不依赖类和对象。