Python学习六:面向对象编程(上)

简介: 这篇文章是关于Python面向对象编程的基础知识,包括类和对象的概念、实例方法、属性、self关键字以及魔法方法等。

前言

对应GitHub代码地址:https://github.com/fengfanli/studyPython

对应的包是: study05_OOP上

一、面向对象编程:

1. oop [object oriented programming] 是一种python的编程思路

面向过程:就是我们一开始学习的,按照解决问题的步骤去写代码 【根据业务逻辑去写代码】
在思考问题的时候, 首先分析’怎么按照步骤去实现’ 然后将问题解决拆解成若干个步骤,并将这些步骤对应成方法一步一步的 最终完成功能
面向对象:关注的是设计思维【找洗车店 给钱洗车】

2. 解释

出差–北京
小明-- 什么时间 - -买什么票【高铁 汽车 飞机】—酒店—回程时间
亲力亲为的去做 【面向过程】

面向过程不足:小明没有更多的精力去考虑别的事情
boss— 秘书【小明需要考虑的事情】----财务----目的:北京 【面向对象】
boss有更多的精力去处理其他的时候,创造更多的价值
从计算机的角度来看:面向过程不适合做大项目
而面向对象合适做更大项目的设计

3. 面向对象 和面向对象编程

面向对象:按人们认识客观世界的系统思维方式,采用基于对象(实体) 的概念建立模型,模拟客观世界分析、设 计、实现软件的办法。

面向对象编程(Object Oriented Programming-OOP)是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。

二、类和对象

1. 类:

类是具有一组 相同或者相似 特征【属性】和行为【方法】的 一系列[多个]对象组合
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

类的组成部分
类(Class)由3个部分构成
类的名称: 类名
类的属性: 一组数据
类的方法: 允许对进行操作的方法 (行为)

现实世界 计算机世界
行为---------> 方法
特征---------->属性

2. 对象:

对象则是根据模板创建的实例,通过实例对象可以执行类中的函数
对象是实实在在的一个东西,类的实例化,具象化

3. 对象和类

类是对象的抽象化 而对象是类的一个实例

4. 实例方法

实例方法:在类的内部,使用def 关键字来定义 第一个参数默认是 self【名字标识可以是其他的名字,但是这个位置必须被占用】

实例方法是归于 类的实例所有

5. 属性

属性:包括 类属性 实例属性 两种。
属性 是 类里面定义的变量

在类的内部定义的变量【类属性
在方法内部定义的【通过类似于self.变量名】 变量,是 实例属性`

三、self

1. self

self和对象指向同一个内存地址,可以认为 self 就是对象的引用。, java 中有this, python 有self;
不同的是:python 类中方法 的第一个参数 为self, java 中类的方法不需要传 this参数。

2. self 特点

  1. self 只有在类中定义 实例方法的时候才有意义, 在调用时候不必传入相应的参数 而是由解释器 自动去指向
  2. self 的名字是可以更改的 可以定义成其他的名字,只是约定俗成的定义成了 self
  3. self 指的是 类实例对象本身, 相当于java中 this

四、 魔方方法

在python中,有一些内置好的特定的方法,方法名是“xxx”,在进行特定的操作时会自动被调用,这些方法称之为魔法方法。

1. 几种常见的魔法方法。

  1. _ init_() 方法:初始化一个类,在创建实例对象为其赋值时使用
  2. _ str_() 方法:在将对象转换成字符串 str(对象) 测试的时候,打印对象的信息。直接打印对象,输出结果只一串类似id地址的信息,从写这个方法,打印对象时,就默认调用这个方法
  3. _ new_() 方法:创建并返回一个实例对象,调用了一次,就会得到一个对象
  4. _ class_() 方法:获得已知对象的类 ( 对象.class)。
  5. _ del_() 方法:对象在程序运行结束后进行对象销毁的时候调用这个方法,来释放资源
  6. _ call_() 方法: 在 直接调用 对象() 这个方法时,会调用这个方法。
    ……

2. __init___函数

总结 init 方法

  1. python 自带的内置函数 具有特殊的函数 使用双下划线 包起来的【魔术方法】
  2. 是一个初始化的方法 用来定义实例属性 和初始化数据的,在创建对象的时候自动调用 不用手动去调用
  3. 利用传参的机制可以让我们定义功能更加强大并且方便的 类

五、知识点总结

1. 类和对象的概念

类就是一个模板,模板里可以包含多个函数,函数里实现一些功能;
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数。

2. 定义类和对象

使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾;
实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。

3. 实例方法与属性

在类的内部,使用 def 关键字可以定义一个实例方法;
定义在类里面,方法外面的属性称之为类属性,定义在方法里面使用self引用的属性称之为实例属性。

4. __init__方法

构造初始化函数,在创建实例对象为其赋值时使用。

5. 理解self

self和对象指向同一个内存地址,self就是对象的引用。

6. 魔法方法

在python中,有一些内置好的特定的方法;
方法名是“xxx”;
在进行特定的操作时会自动被调用。

六、课后问答题

1、什么是类,什么是对象
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能。 对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

2、python中定义一个类的语法格式是什么

3、类(class)由哪三个部分构成
类三要素:类名、属性、方法

4、init方法有什么作用,如何定义
是一个初始化的方法 用来定义实例属性 和初始化数据的,在创建对象的时候自动调用 不用手动去调用
init(self)

5、方法中的"self"代表什么。
对象的引用

6、在类中定义init方法的时候第一个形参必须是self吗?self可以用其他东西代替吗?
不必须,可以使用其他名称代替,前提必须符合命名规则

7、Python面向对象中的魔法方法,是如何定义的,魔法方法需要开发人员去调用吗?
python内置的函数,类似于__str__(self),不需要调用,python自动调用

8、str方法可以没有返回值,这句话是否正确?
有返回值,不正确

9、查看下面代码,请写出有那些是属性,那些是实例方法。

class Person(object): 
foot = 2 
eye = 2 
mouth = 1 
def __init__(self,name,age): 
self.name = name 
self.age = age 
print("self=%s" % id(self)) 
def run(self): 
print('飞快跑') 
def eat(self): 
print('吃饭') 
xiaoming = Person('小明', 18) 
print("xiaoming=%s" % id(xiaoming))

七、课后实操题 直接看 ch06_homework.py 文件

相关文章
|
5天前
|
数据库 Python
Python学习的自我理解和想法(18)
这是我在学习Python第18天的总结,内容基于B站千锋教育课程,主要涉及面向对象编程的核心概念。包括:`self`关键字的作用、魔术方法的特点与使用(如构造函数`__init__`和析构函数`__del__`)、类属性与对象属性的区别及修改方式。通过学习,我初步理解了如何利用这些机制实现更灵活的程序设计,但深知目前对Python的理解仍较浅显,欢迎指正交流!
|
7天前
|
数据采集 机器学习/深度学习 自然语言处理
Python学习的自我理解和想法(16)
这是我在B站千锋教育课程中学Python的第16天总结,主要学习了`datetime`和`time`模块的常用功能,包括创建日期、时间,获取当前时间及延迟操作等。同时简要介绍了多个方向的补充库,如网络爬虫、数据分析、机器学习等,并讲解了自定义模块的编写与调用方法。因开学时间有限,内容精简,希望对大家有所帮助!如有不足,欢迎指正。
|
5天前
|
Python
Python学习的自我理解和想法(19)
这是一篇关于Python面向对象学习的总结,基于B站千锋教育课程内容编写。主要涵盖三大特性:封装、继承与多态。详细讲解了继承(包括构造函数继承、多继承)及类方法与静态方法的定义、调用及区别。尽管开学后时间有限,但作者仍对所学内容进行了系统梳理,并分享了自己的理解,欢迎指正交流。
|
3天前
|
数据采集 数据挖掘 Python
Python学习的自我理解和想法(22)
本文记录了作者学习Python第22天的内容——正则表达式,基于B站千锋教育课程。文章简要介绍了正则表达式的概念、特点及使用场景(如爬虫、数据清洗等),并通过示例解析了`re.search()`、`re.match()`、拆分、替换和匹配中文等基本语法。正则表达式是文本处理的重要工具,尽管入门较难,但功能强大。作者表示后续会深入讲解其应用,并强调学好正则对爬虫学习的帮助。因时间有限,内容为入门概述,不足之处敬请谅解。
|
5天前
|
设计模式 数据库 Python
Python学习的自我理解和想法(20)
这是我在B站千锋教育课程中学习Python第20天的总结,主要涉及面向对象编程的核心概念。内容包括:私有属性与私有方法的定义、语法及调用方式;多态的含义与实现,强调父类引用指向子类对象的特点;单例设计模式的定义、应用场景及实现步骤。通过学习,我掌握了如何在类中保护数据(私有化)、实现灵活的方法重写(多态)以及确保单一实例(单例模式)。由于开学时间有限,内容简明扼要,如有不足之处,欢迎指正!
|
3天前
|
Python
Python学习的自我理解和想法(23)
本文记录了学习Python正则表达式的第23天心得,内容基于B站麦叔课程。文章分为三个部分:1) 正则表达式的七个境界,从固定字符串到内部约束逐步深入;2) 写正则表达式的套路,以座机号码为例解析模式设计;3) 正则表达式语法大全,涵盖字符类别、重复次数、组合模式、位置、分组、标记、特殊字符和替换等知识点。总结中表达了对知识的理解,并欢迎指正。
|
5天前
|
定位技术 Python Windows
Python学习的自我理解和想法(21)
这是一篇关于Python文件操作的学习总结,基于B站千锋教育课程内容整理而成。文章详细介绍了文件操作的基础知识,包括参数(路径、模式、编码)、注意事项(编码一致性、文件关闭)以及具体操作(创建、读取、写入文件)。同时,深入解析了路径的概念,区分绝对路径与相对路径,并通过示例演示两者在实际应用中的差异。此外,还强调了不同模式(如"w"覆盖写入和"a"追加写入)对文件内容的影响。整体内容逻辑清晰,适合初学者掌握Python文件操作的核心技巧。
|
2月前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
315 82
|
5天前
|
Python
Python学习的自我理解和想法(17)
这是我在学习Python第17天的心得总结,基于B站千锋教育课程。今天主要学习了面向对象设计,包括其优缺点、基本概念(类与对象)、定义类、创建对象及调用方法等内容。面向对象编程虽增加了复杂性,但具备可重用性、可维护性、可扩展性和可理解性等优势。文中结合实例阐述了类与对象的关系,并分享了个人理解。因开学时间有限,内容简略,不足之处敬请指正,感谢阅读!
|
7天前
|
数据挖掘 Python
Python学习的自我理解和想法(14)
这是学习Python第14天的总结,基于B站千锋教育课程内容。重点介绍了`math`模块的常用功能,如取绝对值、向上/向下取整、计算π值、幂运算、对数、三角函数等。这些函数广泛应用于科学计算、数据分析和工程领域。通过掌握`math`模块,可实现高效数学运算,甚至编写计算器程序。尽管开学后时间有限,但仍坚持每天学习一到两个模块,希望读者谅解内容简略之处。如有错误,欢迎指正!

热门文章

最新文章

下一篇
oss创建bucket