实例属性和类属

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加上功能,这在静态语言中很难实现。

 

 

 

 

 

 

posted @ 2017-09-21 20:14  遗世独立的愚公  阅读(155)  评论(0编辑  收藏  举报