TOP

Python之路【第九篇】:Python面向对象(一)
2019-08-04 00:19:44 】 浏览:97
Tags:Python 之路 九篇 :Python 面向 对象

阅读目录

一、三大编程范式

编程范式即编程的方法论,标识一种编程风格:

大家学习了基本的python语法后,大家可以写python代码了,然后每个人写代码的风格不同,这些不同的风格就代表了不同的流派;

如果把python的基本语法比作武术的基本功,那么不同的编程风格就好比不同的武林门派。

虽然大家风格不同,但是都可以完成你的编程需求,python是一门面向对象编程语言,但是目前为止,你从未接触面向对象编程,然而你已经可以解决很多问题了,在python中并没有人强制你使用哪一种固定的风格。

三大编程范式:

1、面向过程编程:

2、函数式编程:

3、面向对象编程:

 

二、编程进化论

1、编程最开始就是无组织无结构,从简单控制流中按步写指令

2、从上述的指令中提取重复的代码块或逻辑,组织到一起(比如说,你定义一个函数),便实现了代码重用,且代码由无结构走向结构化,创建程序的过程变得更具逻辑性

3、我们定义函数都是独立于函数外定义变量,然后作为参数传递给函数,这意味着:数据与动作是分离的

4、如果我们把数据和动作内嵌到一个结构(函数或类)里面,那么我们就有了一个‘对象系统’(对象就是数据与函数整合到一起的产物)。

#狗的特征
dog1={
    'name':'朱锐', 'gender':'公', 'type':'藏獒' } dog2={ 'name':'simon', 'gender':'母', 'type':'吉娃娃' } person1={ 'name':'william', 'gender':'母', 'type':'人' } def dog(name,gender,type): # 狗的动作 def jiao(dog): print('一条狗[%s], 汪汪汪' %dog['name']) def chi_shi(dog): print('一条狗[%s] 正在拉屎' %dog['type']) def init(name,gender,type): dog1 = { 'name':name, 'gender':gender, 'type':type, 'jiao':jiao, 'chi_shi':chi_shi, } return dog1 return init(name,gender,type) d1=dog('simon','母','吉娃娃') d2=dog('william','母','藏獒') print(d1) print(d2) d1['jiao'](d1) d2['chi_shi'](d2)

输出结果:

C:\Python35\python3.exe G:/python_s3/chapter24-面向对象/面向对象.py
{'jiao': <function dog.<locals>.jiao at 0x0000000000B3E0D0>, 'gender': '母', 'chi_shi': <function dog.<locals>.chi_shi at 0x0000000000B3E1E0>, 'type': '吉娃娃', 'name': 'simon'} {'jiao': <function dog.<locals>.jiao at 0x0000000000B3E2F0>, 'gender': '母', 'chi_shi': <function dog.<locals>.chi_shi at 0x0000000000B3E378>, 'type': '藏獒', 'name': 'william'} 一条狗[simon], 汪汪汪 一条狗[藏獒] 正在拉屎
类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念;

对象:就是基于类而创建的一个具体的事物 (具体存在的),也是特征和动作整合到一起;

三、面向对象设计与面向对象编程

3.1 面向对象设计(Object oriented design):将一类具体事物的数据和动作整合到一起,即面向对象设计

面向对象设计(OOD)不会特别要求面向对象编程语言。事实上,OOD可以由纯结构化语言来实现(比如C)。但如果想要构造具备对象性质和特点的数据类型,就需要在程序上做更多的努力。

我们现在想用程序表述一台提款机,可以用面向过程,和面向对象两种方式设计。

3.2 面向对象编程(Object-oriented programming):用定义类+实例/对象的方式去实现面向对象的设计

#用面向对象编程独有的语法class去实现面向对象设计
class Dog:
    def __init__(self,name,gender,type): self.name=name self.gender=gender self.type=type def bark(self): print('一条名字为[%s]的[%s],狂吠不止' %(self.name,self.type)) def yao_ren(self): print('[%s]正在咬人' %(self.name)) def chi_shi(self): print('[%s]正在吃屎' %(self.type)) dog1=Dog('alex','female','京巴') print(dog1.__dict__) # dog2=Dog('wupeiqi','female','腊肠') # dog3=Dog('yuanhao','female','藏獒') # # dog1.bark() # dog2.yao_ren() # dog3.chi_shi()

四、小结

一门面向对象的语言不一定会强制你写OO方面的程序。例如C++可以被认为"更好"的“C”;而JAVA,则是万物皆类,此外还规定,一个源文件对应一个类定义。

然而,在python中,类和OOP都不是日常编程所必需的。尽管它从一开始设计就是面向对象的,并且结构上支持OOP,但Python没有限定或要求你在你的应用中写OO的代码

 

用面向对象语言写程序,和一个程序的设计是面向对象的,两者是八竿子打不着的两码事。

纯C写的Linux Kernel事实上比C++/java 之类语言搞出来的大多数项目更加面向对象-----只是绝大部分人都自以为自己到处瞎写的class的苗条代码才是面向对象的正统、而死脑筋linus搞得泛文件抽象不过是过程是思维搞出来的老古董。

 

五、类和对象

1、什么叫类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物(事物即数据和动作的结合体),用它来生产真实的物体(实例)。

2、什么叫对象:睁开眼,你看到的一切的事物都是一个个的对象,你可以把对象理解为一个具体的事物(事物即数据和动作的结合体)

(例如:铅笔是对象,人是对象,房子是对象,狗是对象)

3、类与对象的关系:对象都是由类产生的,上帝造人,上帝首先有一个造人的模板,这个模板即人的类,然后上帝根据类的定义来生产一个个的人。

4、什么叫实例化:由类生产对象的过程叫实例化,类实例化的结果就是一个对象,或者叫做一个实例(实例=对象)

 5.1 类相关知识

5.1.1 初识类

在python中声明函数与声明类相似

声明函数:

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python 数据结构理解分享 下一篇2.4变量--输出