1.Python是动态语言,根据类创建的实例,可以任意绑定属性
2.给实例绑定属性的方法有两种:
通过实例变量或者通过self变量。
1 class Student(object): 2 def __init__(self, name): 3 self.name=name 4 5 ##或者如下: 6 >>>s = Student("bob") 7 >>>s.score = 90
如果类本身需要属性,这个属性虽然归类所有,但是类的所有实例都可以访问到。
给实例绑定方法的用法如下:
1 >>>def set_age(self, age): 2 self.age = age 3 4 5 >>>from types import MethodType 6 >>>s.set_age = MethodType(set_age, s) ##给实例绑定一个方法 7 >>>s.set_age(28) ###调用实例的方法 8 >>>s.age ###测试结果 9 25
但是给一个实例绑定的方法,对另一个实例是不起作用。(其实这样有很多的好处)
此外:如果所有的实例都有相同的方法,可以给class绑定方法,这是类的继承
给class绑定方法如下:
>>>def set_score(self, score): self.score = score >>>Student.set_score = MethodType(set_score, Student)
其实和实例的绑定方法一样的。
***
通常情况下:上面的set_score方法可以直接定义在class中,但是动态绑定允许我们在程序运行的
过程中动态给class加上功能,这在静态语言中很难实现。