Python学习之路四---面向对象
2015-10-29 09:38
573 查看
基本概念
对象(object)可以看做是数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。主要有以下特点:封装:主要是一个隐藏了各种细节的集合,只公开代码单元的对外接口;
继承:就像人类遗传继承,孩子会继承父母的特点,但也可以拥有属于自己的特点;
多态:意味着可以对不同类的对象使用同样的操作。
前两个特性比较容易理解,下面解释下多态:
多态
多态意味着就算不知道变量引用的对象类型是什么,还能对它进行操作,而它会根据对象类型的不同而表现出来不同的行为。其意思就是无论类型是什么都可以通过一些通用方法来处理,只不过是返回来的结果可能不同。比如:get_price()函数,如果是个橘子类则返回橘子的价格,如果是个苹果类则返回苹果的价格。和具体的对象没有关系,也比如1+2 返回 3;但‘a’+‘b’ 返回‘ab’。这里加好就是多态的表现。
类的基本应用
class Person: def set_name(self,name): self.name = name def get_name(self): return self.name foo = Person() foo.set_name('asia') foo.get_name() People.get_name(foo) #后两句意思相同
面向对象设计的建议
将属于一类的对象放在一起。如果一个函数操纵一个全局变量,那么两者做好都在类内作为特性和方法出现。不要让对象过于亲密。方法应该只关心自己实力的特性。让其他实例管理自己的状态。
要小心继承,尤其是多重继承。继承的机制有时候很有用,但也会在某些情况下让事情变的过于复杂。多重继承难以正确使用,难以调试。
简单就好。让你的方法小巧。一般来说,多数方法都应能在30秒内读完,尽量让代码行数控制在一页或者以一屏之内。
当考虑需要什么类以及类需要有什么方法是,应该尝试下面的方法:
(1)写下问题的描述(程序需要做什么?),把所有名词、动词和形容词加下划线。
(2对于所有名词,用作可能的类。
(3)对于所有的动词,用作可能的方法。
(4)对于所有的形容词,用作可能的特性,
(5)把所有方法和特性分配到类。
现在已经有了面向对象模型的草图了。还可以考虑类和对象之间的关系(比如继承或协作)以及它们的作用,可以用以下步骤精炼模型:
(1)写下(或者想象)一系列的使用实例—-也就是你的程序应用时的场景,试着包括所有的功能。
(2)一步步考虑每个使用实例,保证模型包括所有需要的东西。如果有些遗漏的话就添加进来。如果摸出不太则改正。继续,知道满意为止。
当认为有了可用的模型时,就可以code了。
相关文章推荐
- 缓存算法的 Python 实现
- python扩展实现方法--python与c混和编程
- Python windows serial
- python 将字符串类型转为时间类型
- 八大排序算法的 Python 实现
- Python Django安装
- python多线程threading
- 50个python库
- Python 安装与使用
- pyqt4 python2.7 中文乱码的解决方法
- python基础-对象高级特性
- Python环境搭建
- python 基本语法 遍历 for while
- python
- Python拷贝及多进程与类的问题
- 由python代码生成UML类图
- 运行第一个python程序
- 决策树算法 生成 剪枝 in Python
- Python中变量作用域问题——局部变量与全局变量
- python学习笔记(八)列表生成式