您的位置:首页 > 编程语言 > Python开发

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了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: