1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python面向对象编程-面向对象

Python面向对象编程-面向对象

时间:2020-06-05 20:14:17

相关推荐

Python面向对象编程-面向对象

Python面向对象编程:

摘要

面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性扩展性

面向对象编程(Object-oriented Programming,简称 OOP),是一种封装代码的方法。

代码封装,其实就是隐藏实现功能的具体代码,仅留给用户使用的接口,就好像使用计算机,用户只需要使用键盘、鼠标就可以实现一些功能,而根本不需要知道其内部是如何工作的。

Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。

Python中,一切皆对象。我们在前面学习的数据类型、函数等,都是对象。

声明类:

class 类名:类体

要点如下:

1.类名必须符合“标识符”的规则;一般规定,首字母大写,多个单词使用“驼峰原则”。

2.类体中我们可以定义属性和方法。

3.属性用来描述数据,方法(即函数)用来描述这些数据相关的操作。

class Person:#定义一个人类role = 'person'#角色属性name = '张三'#姓名属性age = 18#年龄属性height = 175#身高属性weight = 65#体重属性def walk(self):#方法:人会走路print('人会走路')def run(self):#方法:人会跑步print('人会跑步')def eat(self):#方法:人会吃饭print('人会吃饭')p1 = Person() #实例化

1.概念:

面向过程:(Procedure Oriented)是一种以过程为中心的编程思想。核心是过程(流水线式思维),考虑周全什么时候处理什么东西,最终实现一个什么结果。更加关注的是“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序。

优点:是极大的降低了写程序的复杂度,只需要顺着执行的步骤,堆叠代码,一套流水线或者流程就是用来解决一个问题。

缺点:代码牵一发而动全身面向对象:核心是对象(上帝式思维),世间万物皆为对象。更加关注的是“软件中对象之间的关系”,是一种“设计者”思维,适合编写大规模的程序。

优点:解决了程序的扩展性,对某一个对象单独修改,会立即反应到整个体系中

缺点:可控性差,无法像面向过程的程序设计流水线式的可以精准预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题。

因此,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。

我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程!

:可以理解是一个模板,通过它可以创建出无数个具体实例(通过类定义数据类型的属性(数据)和方法(行为))。比如,前面编写的 Person 表示的只是人类这个物种,通过它可以创建出无数个实例来代表各种不同特征的人(这一过程又称为类的实例化)。

对象:将不同类型的数据、方法(即函数)放到一起,就是对象。

类并不能直接使用,通过类创建出的实例(又称对象)才能使用。这有点像汽车图纸和汽车的关系,图纸本身(类)并不能为人们使用,通过图纸创建出的一辆辆车(对象)才能使用。

从一个类创建对象时,每个对象会共享这个类的行为(类中定义的方法),但会有自己的属性值(不共享状态)。更具体一点:“方法代码是共享的,属性数据不共享”。

属性:类中的所有变量称为属性。例如,Person 这个类中,role、name、age、height、height 都是这个类拥有的属性。

方法:类中的所有函数通常称为方法。不过,和函数所有不同的是,类方法至少要包含一个 self 参数(后续会做详细介绍)。例如,Person 类中,crawl()、eat()、sleep()、protect() 都是这个类所拥有的方法,类方法无法单独使用,只能和类的对象一起使用。

2.类的两种作用

#1.属性引用(类名.属性)print(Person.role) # 查看属性print(Person.walk)#2.实例化(类名()就是实例化) 即:对象名 = 类名()p1 = Person() # 实例化。p1是对象名/实例名

3.init()构造方法—(初始化实例对象的实例属性)

1.类的初始化方法,当实例化时,会自动触发__init__()函数的运行,执行实例对象的初始化工作

2.self:在实例化时自动将对象/实例本身传给__init__()的第一个参数(self)。self指的就是刚刚创建好的实例对象。

3.像__init__()方法:初始化创建好的对象,初始化指的是:“给实例属性赋值”

4.像__new__()方法: 用于创建对象,但我们一般无需重定义该方法。

5.如果我们不定义__init__方法,系统会提供一个默认的__init__方法。如果我们定义了带参的__init__方法,系统不创建默认的__init__方法。

注:

1.Python中的self相当于C++中的self指针,JAVA和C#中的this关键字。Python中,self必须为构造函数的第一个参数,名字可以任意修改。但一般遵守惯例,都叫做self。

#__str__(),打印对象名时自动调用的特殊方法class Person: # 定义一个人类role = 'person' # 类属性def __init__(self,name,age):self.name = name # 实例属性self.age = agedef walk(self): # 实例方法print('人在走路')def __str__(self):return '姓名:%s 年龄:%s' % (self.name, self.age)p1 = Person('balck', 20)print(p1)

4.特殊的类属性

print(Person.name) # 类的名字

print(Person.doc) # 类的文档字符串

print(Person.bases) # 类所有的父类构成的一个元组

print(Person.dict) # 类的属性字典

dir(obj) #可获得对象的所有属性、方法

isinstance(对象,类型) #判断“对象”是不是“指定类型”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。