Python面向对象(1)面向对象基础
Python面向对象(1)面向对象基础
学习目标
- 理解面向对象
- 类和对象
- 添加和获取对象的属性
- 魔法方法
理解面向对象
面向对象是一种抽象化的编程思想,很多编程语言中都有的一种思想。
例如:洗衣服,用手洗和机洗两种方式,手洗需要自己完成所有的过程,机洗可以把主要事务交给洗衣机,这样完成洗衣服这件事会更简单,且我们不需要关心洗衣机内部发生了什么事情。
总结:面向对象就是将编程当成一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况,而编程就是设置事物能做什么事。
类和对象
例如:洗衣机描述洗衣服的过程中,洗衣机其实就是一个物品,即对象,那么洗衣机对象哪来的呢?
洗衣机是由工人制作出来,准确来说是工人根据设计师设计的功能图纸制作出来的。
在面向对象编程的过程中,有两个重要组成部分:类和对象。(类就如图纸,对象就洗衣机)
类和对象的关系:用类去创建(实例化)一个对象。
理解类和对象
类
类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。
- 特征即为属性(变量)
- 行为即为方法(函数)
类比如是制造洗衣机要用到的图纸,类是用来创建对象的。
对象
对象是类创建出来的真实存在的事物,例如:洗衣机。
⚠️注意:先有类,再有对象。
面向对象的实现方法
定义类
Python2中类分为:经典类和形式类
- 语法
|
|
⚠️注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯。
- 体验
|
|
- 拓展:经典类,不由任意内置类型派生出的类,称之为经典类。
|
|
创建对象
对象又名实例。
- 语法:
|
|
- 体验:
|
|
self
self指的是调用该函数的对象。
|
|
一个类创建多个对象
|
|
一个类可以实例化出多个对象,每个对象的内存地址不同。
添加和获取对象属性
属性即是特征,比如:洗衣机的高度、宽度、重量、颜色……
对象属性既可以在类的外面添加和获取,也可以在类里面添加和获取。
类外面添加对象属性
- 语法
|
|
- 体验
|
|
类外面获取对象属性
- 语法
|
|
- 体验
|
|
类里面获取对象属性
- 语法
|
|
- 体验
|
|
魔法方法
在Python中,__xx__()
的函数叫做魔法方法,指的是具有特殊功能的函数。
魔法方法之一__init__()
洗衣机的高度宽度是与生俱来的属性,可不可以在生产过程中就赋予这些属性呢?答案是肯定的。
__init__()
方法的作用就是初始化对象。
|
|
⚠️注意:
__init__()
魔法方法,在创建一个对象时默认被调用,不需要手动去调用。__init__(self)
中的self参数,不需要开发者传递,python解释器会自动把当前对象的引用传递过去。
带参数的__init__()
一个类可以创建多个对象,对不同的对象设置不同的初始化属性需要传参数。
|
|
魔法方法之二__str__()
当print输出对象的时候默认打印对象的内存地址,如果类定义了__str__()
方法,那么就会打印从在这个方法中return的数据。一般的__str__()
方法放置的是解释类的作用或者解释类的状态的文字。
|
|
魔法方法之三__del__()
当删除对象时或对象内存被自动释放时,Python解释器也会默认调用__del__()
方法。
|
|
总结
- 面向对象编程思想是一种抽象的编程思维,面向对象就是将编程当成一个事物,我们不需要考虑整个任务过程,编程的主要目的只是去考虑这个事物的各项属性和各项功能,然后利用这个事物完成我们的任务就可以。
- 类和对象的关系就如同机器图纸和洗衣机的关系,图纸即是类,规定了属性和方法,而洗衣机是通过图纸实例化出来的对象。两者的先后关系必定是先有类再有对象。
- 创建类和利用类来实例化对象的语法如下,一个类可以创建多个对象。
|
|
- 在类里面创建属性(初始化属性)使用魔法方法
__init__()
,在类外面创建属性需要使用对象名.属性名 = 值
语法来创建属性;在类里面调用属性需要使用self.属性名
来访问属性的值,在类外面调用属性时直接使用对象名.属性名
来获取属性值。 - 魔法方法
__init__()
、__str__()
、__del__()
是Python中具有特殊功能的函数,第一个是用来初始化类的属性的;第二个是用来在打印内存地址时返回信息的,一般信息为解释类或者类的状态的说明文字;第三个是类实例化的对象在内存被释放(或删除)情况下执行的操作。