为什么通过动态绑定类的实例方法,不能访问实例属性?
Topic sourcefrom types import MethodType
class Student(object):
def __init__(self,name):
self.name = name
def get_name(self):
return self.name
s = Student('Jenny')
# 绑定一个类属性,实例绑定
Student.get_name = MethodType(get_name, s)
b = Student("Bryan")
print(b.get_name())
应该是这样吧,必须使用实例绑定,但是绑定了一个类属性,所以b获取到的还是Jenny
正确的用法是:
类属性使用类绑定
Student.get_name = get_name
实例属性使用实例绑定
def get_name(self):
return self.name
s = Student('Jenny')
s.get_name = MethodType(get_name, s)
要注意的是:
实例绑定只针对当前的对象(s)有效,而类绑定则相反
- 1
你曾温润如玉