文章目录
一、绑定方法
- 绑定方法: 特殊之处在于将调用者本身当作第一个参数自动传入
- 绑定给对象的方法: 调用者是对象, 自动传入的是对象
- 绑定给类的方法: 调用者是类, 自动传入的是类
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}
二、非绑定方法-》静态方法
- 没有绑定给任何人: 调用者可以是类, 对象, 没有自动传传参的
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