面向对象编程的三大特点:封装、继承和多态!
封装
继续上篇文章的例子,Student类已经具备name和score属性,现在要答应学生的姓名和成绩,该怎么设计呢?可以这么想,谁最清楚name、score的数据是什么?当然是Student类的实例本身了!要访问这些数据,没有必要单独写一个外部函数,直接在类内部定义访问数据的函数就好啦:
class Student(object): def __init__(self,name,score): self.name = name self.score = score def print_stu(self): print('姓名:%s,成绩:%s'%(self.name,self.score))
要调用一个方法,只需要在实例上直接调用:
>>> wc = Student('wc',88) >>> wc.print_stu() 姓名:wc,成绩:88
这样,我们看待一个类时,只需要给出所需的属性数据name和score,而如何打印或者操作这些数据都是在Student类的内部定义好的,这样调用很容易,却不用知道内部函数的实现细节。这个过程就是封装。
和静态语言不同,python允许对实例变量绑定任何数据,也就是说,属于同一个类的不同的实例,拥有的变量名称可能不同:
>>> ly = Student('ly',77) >>> ly.age = 24 >>> ly.age 24
笑声激发自强,发愤、图强、飞身向上