4.6python学习笔记
作者:互联网
面向对象编程及类与对象
#什么是面向对象编程
面向对象编程(OOP)就是创建“对象”。对象是一组相互关联的变量和函数。这些变量通常称为对象的属性,函数称为对象的行为。这些对象为程序提供了一个更好、更清晰的结构。例如,汽车可以是一个对象。如果我们把汽车当作一个对象,那么它的属性就是——颜色、型号、价格、品牌等
等,它的行为/函数是加速、减速、换挡。
另一个例子——如果我们把狗当作一个对象,那么它的属性就是——它的颜色、品种、名字、体重等,而它的行为/函数是行走、吠叫、玩耍等。
面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以
达到提高软件开发效率的作用。
面向过程编程和面向对象编程的区别
#定义上的区别
面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
1.面向过程的意思是让别人去做一件事,从头一步一步地教别人去做这件事到结束。面向对象的意思是告诉我们一个事情,让别人去做,达到我们的预期就行,至于过程我们不需要知道!
2.面向过程就是为了解决某个问题,它是只活在当下的一种思维模式,而面向对象呢?是一种世界观,以上帝视角看问题看世界,是一种考虑长远问题的思维模式。是由于软件业务的扩大,功能要求也越来越复杂,创造出来的区别于面向过程的思维模式。
面向对象编程三大特征
封装,继承和多态是面向对象的三大特征,这三种特征都是面向对象编程语言自身提供的机制,可以让我们
更方便的进行面向对象程序设计:
#封装:让用户可以访问需要的方法,禁止访问不必要的方法,屏蔽了类内部的复杂性。
#继承:使得子类可以继承父类的代码,也是一种代码复用手段,增强了类与类之间的逻辑结果关系。同时,
继承也是多态的必要条件。
#多态:一个事物(对象)可以表现多种形态,多态是面向对象编程中,一个非常强大的特性
类和对象
#什么是类
这个问题的直接答案是:类是对象的集合。与原始数据结构不同,类是用户定义的数据结构。它们使代码更易于管理。
简单来说就是某一类事物,它们具有相同的属性和行为或者说是方法,在代码中我们将这些行为或者方法定义成函数。
#类是抽象的
例如,我们在说狗时,在没有特指是什么品种的狗,或者没有具体哪一只狗的时候,这个狗就是一个大类,包含了所有的狗,这时狗就是一个类,是抽象的并没有具体到哪只,只是指代狗这一类事物。
#什么是对象
对象的话就是对类的实现,对象是具体的,已刚才狗为例,狗是 一个大类,是抽象的,当我们说这是一条颜色是黑色,长尾巴,会‘汪汪’叫的小狗时,这个小狗就是对象,它是具体存在的是一个实体。
这一个过程我们可以看成将一个抽象的类转化成了一个具体的有属性和行为或者说方法的对象,在代码中
类和对象的代码实现
先定义类,后产生对象
# 定义一个学生类
class Student:
school = '清华大学'
def chose_course(self):
print('学生选课功能')
注意:类体代码无须调用就会执行,产生类的名称空间
1.语法结构如下:
class 类名: # 1.class是定义类的关键字2.类名类似于函数名 但是首字母推荐大写
类体代码 # 类体代码就是存放对象公共数据和功能的地方
数据: 变量名 = 变量值
功能: 函数
2.查看类名称空间的方法>>>:__dict__
print(Student.__dict__) # 返回值是个字典
3.获取类数据和功能的方式:
方式1:字典式取值
print(Student.__dict__['school']) # 获取类中的属性
print(Student.__dict__['choose_course']) # 获取类中的属性
方式2:句点符
print(Student.school) # # 获取类中的属性school
print(Student.choose_course) # # 获取类中的属性choose_course
# 产生对象:类加括号
1.产生对象
obj1 = Student() # 类名加括号就是在产生一个对象
obj2 = Student()
print(obj1.__dict__, obj2.__dict__) # {} {}
这里通过赋值给变量名的方式,使用变量名调用__dict__得到的是空字典,但是obj仍然可以通过句点符点的方式获取和修改类中的数据,如下:
2.获取和修改数据
获取数据:
print(obj1.school) # 清华大学
print(obj1.choose_course) # bound method,即绑定的方法
修改数据:
Student.school = '北京大学' # 方式1
Student.__dict__['school'] = '北京大学' # 方式2
3.可以产生多个对象
这里要注意,不管类赋值给哪个变量名,都可以使用此变量名,访问类中数据,如下
print(obj1.school) # 北京大学
print(obj2.school) # 北京大学
标签:__,school,4.6,面向对象编程,python,笔记,对象,Student,print 来源: https://www.cnblogs.com/zq0408/p/16214643.html