绑定方法与非绑定方法

绑定方法

绑定到对象的方法

定义:凡是在类中定义的函数(没有被任何装饰器修饰),都是绑定给对象的,就是给对象用的。
特点: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() 类和对象都可以调用,不会自动传值,不依赖类和对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值