27、绑定方法与非绑定方法

一、绑定方法

  1. 绑定方法: 特殊之处在于将调用者本身当作第一个参数自动传入
    1. 绑定给对象的方法: 调用者是对象, 自动传入的是对象
    2. 绑定给类的方法: 调用者是类, 自动传入的是类
class Mysql:
    def __init__(self, ip, port):
        self.ip = ip
        self.port = port

    def func(self):
        print('%s %s' % (self.ip, self.port))


obj1 = Mysql('111', 8000)
obj1.func()

# 换一种方法, 从配置中读取
import settings

obj2 = Mysql(settings.IP, settings.PORT)
obj2.func()

# 可不可以将方法 放到类中
import settings


class Mysql:
    def __init__(self, ip, port):
        self.ip = ip
        self.port = port

    def func(self):
        print('%s %s' % (self.ip, self.port))

    # def from_conf('类自己'):
    #     return '类自己'Mysql(settings.IP, settings.PORT)

    @classmethod  # 将下面的函数装饰城绑定给类的方法
    def from_conf(cls):
        print(cls)
        return cls(settings.IP, settings.PORT)


obj2 = Mysql.from_conf()  # 结果: <class '__main__.Mysql'>
print(obj2.__dict__)  # {'ip': 123, 'port': 8000}

二、非绑定方法-》静态方法

  1. 没有绑定给任何人: 调用者可以是类, 对象, 没有自动传传参的
class Mysql:
    def __init__(self, ip, port):
        self.ip = ip
        self.port = port

    @staticmethod  # 将下述函数装饰成一个静态方法
    def create_id(x):
        print(x)
        import uuid
        return uuid.uuid4()


obj1 = Mysql('123', 8000)
obj1.create_id(1)
Mysql.create_id(3)

相关连接(笔记来自于视频课程的归类整理):
[1]: https://www.bilibili.com/video/BV1QE41147hU?p=17
[2]: https://www.zhihu.com/column/c_1189883314197168128
[3]: https://www.cnblogs.com/linhaifeng/articles/6384466.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值