讲师中心 微信公众号
AI工具推荐 视频效率加速

讲解Python核心基础之面向对象

秋瑶吖_2252

秋瑶吖_2252

发布时间:2020-12-14 17:40:46

|

3470人浏览过

|

来源于CSDN

转载

python视频教程栏目介绍核心基础的面向对象

讲解Python核心基础之面向对象

相关免费学习推荐:python视频教程

1、面向对象简介

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。

• Python是一门面向对象的编程语言
• 所谓面向对象的语言,简单理解就是语言中的所有操作都是通过对象来进行的
• 面向过程
• 面向过程指将我们的程序分解为一个一个步骤,通过对每个步骤的抽象来完成程序
• 这种编写方式往往只适用于一个功能,如果要实现别的功能,往往复用性比较低
• 这种编程方式符号人类的思维,编写起来比较容易
• 1.妈妈穿衣服穿鞋出门
• 2.妈妈骑上电动车
• 3.妈妈到超市门口放好电动车
• 4.妈妈买西瓜
• 5.妈妈结账
• 6.妈妈骑电动车回家
• 7.到家孩子吃西瓜
• 面向对象的编程语言,关注的是对象,而不注重过程,对于面向对象一切皆对象
• 以上方式可以用 孩子妈妈给孩子买瓜来解决
• 面向对象的编程思想,将所有功能统一保存到对应的对象中,要使用某个功能,直接找到对应的对象即可
• 这种编码方式比较容易阅读,并且易于维护,容易复用。但是编写的过程中不太符合常规的思维,编写相对麻烦

立即学习“Python免费学习笔记(深入)”;

  • 面向对象基本特征
  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据属性:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

面向对象(Object oriented Programming,OOP)编程 的思想主要是针对大型软件设计而来的。面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,使程序的扩展性更强、可读性更好,从而大大提高了编程的效率。
  
  Python 完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。
  Python 中,一切皆对象。例如,数据类型、函数等,都是对象。

  • Python 支持面向过程、面向对象、函数式编程等多种编程范式。面向对象、面向过程区别:

相同点: 都是解决问题的思维方式,都是代码组织的方式
不同点:
面向过程(Procedure Oriented)思维: 面向过程编程更加关注的是“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序。
面向对象(Object Oriented)思维: 面向对象更加关注的是“软件中对象之间的关系”,更契合人的思维模式,是一种“设计者”思维,适合编写大规模的程序。面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。
但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。面向过程和面向对象是相辅相成的,面向对象离不开面向过程。
面向对象思考方式 遇到复杂问题,先从问题中找名词(面向过程更多的是找动词),然后确立这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的关系。

2. 类(class)

  • 创建类
  • 我们目前学习的都是Python的内置对象,但是内置对象并不都能满足我们的需求,所以我们在开发中经常要自定义一些对象
  • List item类简单理解它就是相当于一个图纸,在程序汇总我们需要根据类来创建对象。
    类就是对象的图纸
  • 我们也称对象是类的实例(instance)
  • 如果多个对象是通过一个类创建的,我们称这些对象是一类对象
  • 类也是一个对象,类就是用来创建对象的对象
  • 可以像对象中添加变量,对象中的变量称之为属性 语法:对象.属性名 = 属性值
class MyClass():
    pass

类是抽象的,也称之为“对象的模板”。 我们需要通过类这个模板,创建类的实例对象,然后才能使用类定义的功能。
而在Python中,Python对象包括几个部分:

在这里插入图片描述

  • 对象实例化
mc = MyClass()mc1 = MyClass()mc2 = MyClass()mc3 = MyClass()

所以,我们需要定义构造函数 init() 方法,该方法会向我们所定义的对象中赋予对象的属性。构造方法用于执行“实例对象的初始化工作”,即对象创建后,初始化当前对象的相关属性,无返回值。

init()的要点如下:

361SCAN security check your skill python scripts
361SCAN security check your skill python scripts

扫描并分析已安装技能,用于查看指定技能目录的名称、描述和详情,或列出所有已安装的技能。

下载

名称固定,必须为:init()
第一个参数固定,必须为:self。 self 指的就是刚刚创建好的实例对象。
构造函数通常用来初始化实例对象的实例属性,例如,示例1中初始化实例属性:name和sound
通过“类名(参数列表)”来调用构造函数。调用后,将创建好的对象返回给相应的变量。比如: cat = Animal(‘小花’,‘喵喵’)
__init __()方法:初始化创建好的对象,初始化指的是:“给实例属性赋值”
__new __()方法: 用于创建对象,但我们一般无需重定义该方法。
如果我们不定义__init__方法,系统会提供一个默认的__init__方法。如果我们定义了带参的__init__方法,系统不创建默认的__init__方法。
注:
Python 中的 self 相当于 C++中的 self 指针,JAVA 和 C#中的 this 关键字。Python 中,self 必须为构造函数的第一个参数,名字可以任意修改。但一般遵守惯例,都叫做 self。
3. 类的定义

• 类和对象都是对现实生活中事物的抽象
• 事物包含两部分
• 1. 数据(属性)
• 2. 行为(方法)
• 调用方法 对象.方法名()
• 方便调用和函数调用的区别:如果是函数调用,调用时有几个形参,就会传递几个实参。如果是方法调用,默认传递一个参数,所以方法中至少得有一个形参
• 在类代码块中,我们可以定义变量和函数
• 变量会成为该类实例的公共属性,所有的该实例都可以通过 对象.属性名的形式访问
• 函数会成为该类实例的公共方法,所有该类实例都可以通过 对象.方法名的形式访问

class Person():
    name = '奥特曼'
    def speak(w):
        print('我能说话')a = Person()b = Person()a.name = '葫芦娃'print(a.name)print(b.name)print(a.speak())print(b.speak())

4. 参数self

  • 属性和方法

• 类中定义的属性和方法都是公共的,任何该类实例都可以访问
• 属性和方法的查找流程
• 当我们调用一个对象的属性时,解析器会现在当前的对象中寻找是否还有该属性,如果有,则直接返回当前的对象的属性值。如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值。如果没有就报错
• 类对象和实例对象中都可以保存属性(方法)
• 如果这个属性(方法)是所以的实例共享的,则应该将其保存到类对象中
• 如果这个属性(方法)是摸个实例独有的。则应该保存到实例对象中
• 一般情况下,属性保存到实例对象中 而方法需要保存到类对象中

  • self

方法是从属于实例对象的方法。实例方法的定义格式如下:
 
    def 方法名(self ,[形参列表]):
      函数体

方法的调用格式如下:
    对象.方法名([实参列表]) 要点:

定义实例方法时,第一个参数必须为 self。和前面一样,self 指当前的实例对象。 调用实例方法时,不需要也不能给 self
传参。self 由解释器自动传参 函数和方法的区别

都是用来完成一个功能的语句块,本质一样。 方法调用时,通过对象来调用。方法从属于特定实例对象,普通函数没有这个特点。
直观上看,方法定义时需要传递 self,函数不需要。 实例对象的方法调用本质: alt

类中其他操作:

dir(obj)可以获得对象的所有属性、方法 obj.dict 对象的属性字典 pass 空语句,相当于占位符。
isinstance(对象,类型) 判断“对象”是不是“指定类型”。

class Person():

    def speak(self):
        print('你好我是%s' % self.name)

    def read(self):
        passa = Person()b = Person()a.name = '葫芦娃'b.name = '奥特曼'a.speak()b.speak()结果:
C:\Users\giser\AppData\Local\Programs\Python\Python37\python.exe D:/pycharm/pythonbasic/day09.py
你好我是葫芦娃
你好我是奥特曼

Process finished with exit code 0

                 

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3071

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

554

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

522

2026.02.12

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

6755

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

342

2025.11.27

C++ 面向对象编程与设计模式实践
C++ 面向对象编程与设计模式实践

本专题整合了 C++ 面向对象编程的核心机制,涵盖类的定义与访问控制、构造函数与析构函数、拷贝语义与移动语义、继承与虚函数多态、抽象类与接口、运算符重载、友元函数等关键知识点,同时结合单例模式、工厂模式、观察者模式、策略模式等常用设计模式的 C++ 实现,帮助开发者写出结构清晰、易于维护的面向对象代码。

344

2026.04.09

Java 面向对象与核心编程机制
Java 面向对象与核心编程机制

系统讲解 Java 面向对象编程的核心知识体系,涵盖类的定义与封装、构造方法与 this/super 关键字、继承与方法重写、多态与向上向下转型、抽象类与接口的区别与设计原则、异常处理机制(try-catch-finally / 自定义异常)、泛型的类型参数与通配符、集合框架(List/Set/Map)的使用与遍历方式,帮助开发者全面掌握 Java 程序设计的核心机制与面向对象思维。

223

2026.04.17

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

355

2025.11.27

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

20

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn