绑定方法
在我们定义类的时候,会发现在类中会定义一些函数,我们称之为方法,那么对于我们进行实例化之后产生的实例,我们也可以使用这些方法,那么问题来了,这些方法到底是绑定给类的还是绑定给实例化后产生的对象的?如果是绑定给对象的,那么如何对类进行绑定方法呢?下面我们来进行分析:
绑定给对象的方法
在python中,如果按照正常的函数定义方式,来定义类中的方法,不加任何装饰,那么这些方法是绑定给类实例化后产生的对象的,可以通过对象名.方法名()
方式调用。下面通过代码进行演示:
class Student():
school = 'SH'
def __init__(self, name, age):
self.name = name
self.age = age
def tell_info(self, v):
print('name:%s, age: %s, salary:%s' % (self.name, self.age, v))
stu = Student('mary', 19)
# 对象来调用方法, 绑定给对象的方法由对象来调用,特殊之处是把对象自己当成第一个参数传递到方法里面
stu.tell_info(20000) # 本质就是stu.tell_info(stu,10)
绑定给类的方法
既然上面说了不添加任何装饰所定义的方法是绑定给对象的,那么绑定给类的方法就需要添加一些装饰了。在python中如果需要将某一个方法绑定给类,那么就需要在该方法定义的时候添加@classmethod
装饰器,见名知意,就说明该方法是绑定给类的方法,该装饰器的内部就完成了这样一个功能,在使用的时候通过类名.方法名()
调用,内部会自动将类作为第一个参数传给该方法。下面我们通过代码进行演示:
# 我们通过简单的mysql连接方式来举例,mysql连接需要ip和port
# 我们想要通过调用类里面的方法来返回一个对象
class Mysql()