为什么通过动态绑定类的实例方法,不能修改实例属性?
Topic source看了CSDN上关于MethodType方法的解析:Python3中的MethodType方法详解_vzp的博客-CSDN博客_methodtype python3
意思应该是用MethodType方法为类绑定外部方法,所有该类下的具体实例都可以调用该方法,但是每次调用仅作用于该类的对应属性,不改变实例中的对应属性
如果用直接赋值的方式为类添加方法,则实例每次调用该方法都只作用于实例中的对应属性。
但是,只有给Student添加属性,才能给Student的实例添加方法,因此要用Student.set_score=set_score来给Student的实例添加方法。
这句话不是很能看懂。。。
MethorType(func,class)实际将func里的self指向了类,从而self.score=score意思变为了这是类属性为传入的参数score,而调用t.score指的是实例属性的score,调用实例的方法的时候,self传进去的是你在MethodType里的class本身,而不是你的实例,最终修改的就是类属性。
- 1
- 2
大灰灰69223
因为你是给类绑定的方法,而不是给实例绑定的方法。调用方法获取和修改的属性其实都是类的属性和方法,并没有影响到实例的属性。