Day20笔记-面向对象&类和对象&类中的属性和函数&构造和析构函数

一、面向对象基础

1.概念
1.1面向对象的设计思想

面向对象是基于万物皆对象这个哲学观点,在Python中,一切皆对象

举例说明:

​ 案例一:我想要吃大盘鸡

​ 面向过程 面向对象

​ 1.自己去买菜 1.委托一个会砍价的人帮忙去买菜

​ 2.自己择菜 2.委托一个临时工帮忙择菜

​ 3.自己做菜 3.委托一个厨师帮忙做菜

​ 4.自己开始吃 4.自己开始吃

​ 案例二:小明是一个电脑小白,想要配一台电脑,买完零件后需要运到家里,组装完成后打开电脑玩游戏

​ 面向过程 面向对象

​ 1.小明补充电脑知识 1.委托一个懂电脑的朋友(老王)去帮忙买零件

​ 2.小明去买零件 2.委托一个能跑腿的人将零件运送到家里

​ 3.小明把零件带回家里 3.委托一个会组装电脑的人帮小明组装电脑

​ 4.小明组装电脑 4.小明自己打开电脑,开始玩游戏

​ 5.小明开机玩电脑

1.2面向过程和面向对象的区别【面试题】

面向过程

在生活案例中:

​ 一种看待问题的思维方式,在思考问题的时候,着眼于问题是怎样一步一步解决的,然后亲力亲为的去解决问题

在程序中:

​ 1》代码从上而下顺序执行

​ 2》每一模块内部均是由顺序、选择和循环三种基本结构组成

​ 3》程序流程在写程序时就已决定

面向对象

在生活案例中:

​ 也是一种看待问题的思维方式,着眼于找到【一个具有特殊功能的具体个体,然后委托这个个体去做某件事情】,我们把这个个体就叫做对象,一切皆对象

​ 是一种更符合人类思考习惯的思想【懒人思想】,可以将复杂的事情简单化,将程序员从执行者角度转换成了指挥者角度

在程序中:

​ 把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象

​ 1》对同类对象抽象出其共性,形成类

​ 2》类中的大多数数据,只能用本类的方法进行处理

​ 3》程序流程由用户在使用中决定

​ 4》使用面向对象进行开发,先要去找具有所需功能的对象,如果该对象不存在,那么创建一个具有该功能的对象

注意:面向对象只是一种思想,不是一门编程语言,也不会绑定编程语言

面向过程和面向对象的优缺点【面试题】

面向过程:

​ 优点:性能较高,比如单片机,嵌入式开发等一般采用的是面向过程的方式,因为性能是最重要的因素

​ 缺点:没有面向对象易于维护,易于复用,易于扩展,开销比较大,比较消耗资源

面向对象:

​ 优点:易于维护,易于复用,易于扩展,因为面向对象有封装、继承和多态的特征,可以涉及出低耦合的系统,使得系统更加灵活

​ 缺点:性能较低

使用面向对象解决问题,其中的核心内容:类和对象

2.类和对象【重点掌握】
2.1概念

类:一个具有特殊功能的实体的集合【群体】,是抽象的概念

对象:在一个类中,一个具有特殊功能的实体,能够帮忙解决特定的问题【对象也被称为实例】,是具体的存在

两者之间的关系:类用于描述某一类对象的共同特征,而对象则是类的具体存在

问题:先有对象还是先有类?

先有对象,再有类-----》将多个具有共同特征的对象,抽取一个类出来

先有类,再有对象----》在代码中,一般都是先定义类,通过类创建对象,

举例:

​ 类 对象

​ 人 张三、李四、王麻子、杨阳。。。

​ SuperHero 蝙蝠侠、蜘蛛侠、美国队长。。。

​ 快递 顺丰、圆通、申通、韵达。。。

帮助理解:类也是一种数据类型,只不过是自定义的,用于描述生活中的一些事物,且Python中并没有提供这些类型,跟学过的intAct,float,str。。。。类似,用类创建对象则相当于定义一个类的变量

2.2类的定义

格式:

class  类名():
    类体
    
# ()可以省略

说明:

​ a.Python中使用class关键字定义类

​ b.类名只要是一个合法的标识符即可,但是要求:遵循大驼峰命名法【每个单词的首字母大写】 ,如:KeyError,ValueError,NameError,IndexError…….

​ c.尽量使用单个或多个有意义的单词连接而成,类名中一般不使用下划线

​ d.通过缩进来体现类体的存在

​ e.类体一般包含两部分内容:对类的特征描述和行为描述

​ f.类的包含两部分:类的声明和类的实现

# 1.类是一种数据类型
# a
num = 10  # 定义一个变量
print(type(num))  # <class 'int'>
​
# b.
v = ValueError() # 创建一个对象
print(type(v))   # <class 'ValueError'>
​
# 2.类的定义
# a.函数的定义
# def func():
#     print('ok~~~~~func')
​
# b.类的定义
class Check():
    # 一般不会在类中print
    print('ok~~~~class')
class MyClass1():
    pass
class MyClass2:
    pass
​
# 通过类创建对象,语法:变量 = 类名()
m1 = MyClass1()
print(m1)
m2 = MyClass2()
print(m2,id(m2))
m22 = MyClass2()
print(m22,id(m22))
​
'''
总结:
    a.类和函数相比,函数必须调用才能执行其中的代码,但是类只要定义完毕,其中的内容就会被加载一遍
    b.在同一个py文件中,可以定义多个类,但是,如果要实现的需求较为复杂,一般会结合模块使用,在一个模块中定义一个类
    c.定义类的过程中,类名后面的()可以省略
    d.创建对象:变量 = 类名(),此处的()不能省略
    e.同一个类,默认情况下,可以创建无数个对象,每个对象都会被分配不同的地址
    f.直接输出对象,默认的情况下,会得到一个地址
'''
2.3对象的创建
# 通过类创建对象,语法:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值