python学习笔记(三)之面向对象编程
2014-07-31 20:58
411 查看
面向对象编程无需赘述,主要是三大点:封装(encapsulation)、继承(inheritance)、多态(polymorphism)
一、类的定义、继承和实例:
python中的类也使用class类定义,最简单的一个类例如:
二、类的私有函数:
如果要让类内部的函数限制访问,即不能被外部访问,可以在函数的名称前加上双下划线__,修改一下上面的代码做说明:
但是,对于下面这样的类:
面向对象只是简单介绍python的不同之处,要灵活运用python简约的特点,具体的其他更复杂的实现,还是在实际项目中接触最有效。
一、类的定义、继承和实例:
python中的类也使用class类定义,最简单的一个类例如:
Class a: def __init__(self):#相当于java中的构造函数 self.m=1而对于一个更复杂些的类的定义和实现,即可看出python的类的特点:
__author__ = 'wadetang' # -*- coding: UTF-8 -*- class a: def __init__(self): self.m=1 #初始化定义 class b(a):#由a类继承而来 def __init__(self): a.__init__(self) self.n=2 def sum(self):#self永远是第一个参数,表示创建的实例本身 print self.m+self.n c=b() #实例化 c.sum()同样,类也可以使用三引号来进行文档说明。
二、类的私有函数:
如果要让类内部的函数限制访问,即不能被外部访问,可以在函数的名称前加上双下划线__,修改一下上面的代码做说明:
# -*- coding: UTF-8 -*- class a: def __init__(self): self.m=1 #初始化定义 class b(a):#由a类继承而来 def __init__(self): a.__init__(self) self.n=2 def sum(self):#self永远是第一个参数,表示创建的实例本身 print self.m+self.n def __private(self): print "it is private" c=b() #实例化 c.sum() c.__private()输出为:
Traceback (most recent call last): File "D:/Workspaces/Pythonworkspace/class01.py", line 20, in <module> c.__private() AttributeError: b instance has no attribute '__private' 3报错,即不能被访问。这样很大程度提升了代码的健壮性。
但是,对于下面这样的类:
__author__ = 'wadetamg' # -*- coding: UTF-8 -*- class Student(): def __init__(self,name,score): self.name=name self.score=score我们要专门访问name和score又怎么办?可以给Student增加函数来实现:
class Student(): def __init__(self,name,score): self.__name=name self.__score=score def get_name(self): return self.__name def get_score(self): return self.__score xiaoming=Student("xiaoming",98) print xiaoming.get_name() print xiaoming.get_score()我们还要可以修改score怎么办呢?可以这样:
__author__ = 'wadetamg' # -*- coding: UTF-8 -*- class Student(): def __init__(self,name,score): self.__name=name self.__score=score def get_name(self): return self.__name def get_score(self): return self.__score def set_score(self,score): self.__score=score return self.__score xiaoming=Student("xiaoming",98) print xiaoming.get_name() print xiaoming.get_score() print xiaoming.set_score(100)双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是。不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量。
面向对象只是简单介绍python的不同之处,要灵活运用python简约的特点,具体的其他更复杂的实现,还是在实际项目中接触最有效。
相关文章推荐
- Python学习笔记(八):面向对象编程、错误调试和测试(快速入门篇)
- python2.7学习笔记(9) ——面向对象编程
- 【Python学习笔记】面向对象编程:继承和多态
- Python学习笔记——面向对象编程
- Python学习笔记 === python面向对象编程
- Python学习笔记--2--面向对象编程
- python学习笔记5 面向对象编程
- Python学习笔记09_面向对象编程Object Oriented Programming
- 【Python】学习笔记——-7.0、面向对象编程
- [学习笔记]python之面向对象编程
- Python简明教程学习笔记5--面向对象编程
- 【Python学习笔记】面向对象编程:访问限制
- python学习笔记之面向对象编程特性(二)
- Python学习笔记13:Python面向对象编程
- Python面向对象编程中关于类和方法的学习笔记
- 【Python学习笔记】面向对象编程
- 【Python学习笔记】面向对象编程:类和实例
- 【Python学习笔记】面向对象编程:获取对象信息
- python 学习笔记7 面向对象编程
- python 学习笔记day08-面向对象编程