接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法!
1.定义实例方法
一个实例的私有属性就是以__开头的属性,无法被外部访问,但是,从类的内部是可以访问的,除了可以定义实例的属性,还可以定义实例的方法。
其实,实例的方法就是在类中定义函数,它的第一个参数永远是self,指向调用该方法的实例本身,其他参数和普通参数一致。
get_name()就是一个实例方法,它的第一个参数是self,这个参数不需要显示传入
调用实例方法必须在实例上调用。
在实例方法内部可以访问所有实例属性,这样的话,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装下形式能保护内部数据一致性,还可以简化外部调用的 难度。即通过方法来访问属性,可以避免对属性的修改。
2.方法其实也是属性
我们在class中定义的实例方法也是属性,它实际上是一个函数对象:
即,p1.get_grade返回的是一个函数对象,但这个函数是绑定到实例的函数,p1.get_grade()才是方法的调用。
因为方法也是一个属性,所以,它也可以动态地添加到实例中,只是需要用types.MethodType()方法把一个函数变为一个方法,
在这里让函数和实例进行绑定。