Python 06 之面向对象基础

news2024/11/18 20:20:12

😀前言
在日常编程和软件开发中,我们通常会遇到各种各样的问题,其中很多问题都可以通过面向对象的程序设计方法来解决。面向对象编程不仅可以使代码更加组织化和系统化,而且还可以提高代码的重用性和可维护性。
.
在本教程中,我们将探索Python语言中面向对象编程的基本概念。我们将从最基本的类和对象的定义开始,然后深入探讨类的属性和方法,以及如何使用特殊的类方法来控制对象的初始化、表示和销毁过程。
.
我们将通过实际的代码示例来逐一讨论这些概念,以帮助你更好地理解和掌握Python的面向对象编程。

🏠个人主页:尘觉主页
在这里插入图片描述

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🥰阿里云专家博主
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 😉亚马逊DyamoDB结营

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • Python 06 之面向对象基础
  • 1、概念
    • 1.1 面向函数的编程方式:
    • 1.2 ⾯向对象的编程方式
    • **1.3 类和对象的概念**
    • **1.4 类和对象的关系**
    • **1.5 类的设计**
    • **1.6 属性和⽅法的确定**
  • 2、语法
    • **2.1、 class 关键字**
    • **2.2 创建一个对象**
    • 2.3 方法中的 self 参数
  • 3、 init方法
    • 3.1 iniit 初始化方法
  • 4、del 方法
  • 5、str 方法
    • 😄总结

Python 06 之面向对象基础

1、概念

1.1 面向函数的编程方式:

1、把某个需求的所有步骤,比如加减乘除,从头到尾逐步实现;

2、根据开发需求,将某些功能独立的代码。比如加法,封装成一个又一个函数。

3、最后,我们就是有顺序的调用不同的函数就可以了。

1.2 ⾯向对象的编程方式

相⽐较函数,⾯向对象是更⼤的封装,根据职责在⼀个对象中封装多个⽅法

  1. 在完成某⼀个需求前,首先确定职责 —— 要做的事情(⽅法) ;

  2. 根据职责确定不同的对象,在对象内部封装不同的⽅法;

  3. 最后完成的代码,就是顺序地让不同的对象调⽤不同的⽅法。

1.3 类和对象的概念

类和对象是⾯向对象编程的两个核⼼概念。

类:类是对⼀群具有相同特征或者⾏为的事物的⼀个统称,是抽象的,不能直接使⽤ 。

比如,人相当于一个类:身高,性别,年龄。这些特征称为属性,而吃饭,跑步,喝水,这些行为则称为方法。

对象:对象是由类创建出来的⼀个具体存在,可以直接使⽤。

由哪⼀个类创建出来的对象,就拥有在哪⼀个类中定义的 属性 和⽅法 。

1.4 类和对象的关系

类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象 ;

  • 类只有⼀个,⽽对象可以有很多个 ;
  • 不同的对象之间属性可能会各不相同 ;
  • 类中定义了什么属性和⽅法,对象中就有什么属性和⽅法,不可能多,也不可能少 。

1.5 类的设计

在程序开发中,要设计⼀个类,通常需要满⾜⼀下三个要素:

  1. 类名 这类事物的名字 ; 人
  2. 属性 这类事物具有什么样的特征 ; 身高,年龄。性别
  3. ⽅法 这类事物具有什么样的⾏为。 吃,喝,玩,乐。

1.6 属性和⽅法的确定

  1. 对于对象的特征描述,通常可以定义成属性 ,属性的具体实现可以是一个 变量;
  2. 对象具有的⾏为(动词),通常可以定义成⽅法,方法的具体实现可以是一个类里面的函数 ;

注:需求中没有涉及的属性或者⽅法在设计类时,不需要考虑。

2、语法

2.1、 class 关键字

class 关键字用于创建一个类,语法如下:

class 类名: 
    def ⽅法 1(self, 参数列表): 
    pass

⽅法的定义格式和之前学习过的函数⼏乎⼀样 ;

区别在于第⼀个参数必须是 self 。

示例:

class Cat:
    def eat(self, name):
        print(name + "吃饭")
 
    def drink(self, name):
        print(name + "喝水")

2.2 创建一个对象

  1. 实例------通过类创建出来的对象叫做类的实例;
  2. 实例化------创建对象的动作叫做实例化 。

语法:

对象名 = 类名(参数列表)

# 定义Cat类
class Cat:
    def eat(self, name):
        print(name + "吃饭")
 
    def drink(self, name):
        print(name + "喝水")
 
 
# 创建Cat 类
cat = Cat();
# 调用Cat 吃饭的方法
cat.eat("小白");
# 调用Cat 喝水的方法
cat.drink("小黑")

image-20230903170058678

2.3 方法中的 self 参数

  • 在类封装的⽅法内部, self 就表示调用方法的对象自己 ;

  • 调⽤⽅法时,不需要传递 self 参数 ;

  • 在方法内部可以通过 self. 访问对象的属性;

    • 通过在方法内部使用 self.属性名 = 值,为类添加属性
  • 在方法内部可以通过 self. 调⽤对象的⽅法;

  • 在类的外部,通过 对象名. 访问对象的属性和⽅法 。

# 定义Cat类
class Cat:
    def set_name(self, name):
        self.name = name
 
    def eat(self):
        print(self.name + "吃饭")
 
    def drink(self):
        print(self.name + "喝水")
 
 
# 创建Cat 类
cat = Cat();
# 调用 set_name 方法
cat.set_name("小白")
# 调用Cat 吃饭的方法
cat.eat();
# 调用Cat 喝水的方法
cat.drink()

image-20230903170119013

3、 init方法

3.1 iniit 初始化方法

init就是对象的初始化⽅法, init 是对象的内置⽅法。

当使⽤ 类名() 创建对象时,会自动执⾏以下操作:

  1. 为对象在内存中分配空间 —— 创建对象 ;

  2. 系统自动调用⽅法(__ init__ ) .

# 定义Cat类
class Cat:
    def __init__(self):
        self.name = '小白'
 
    def eat(self):
        print(self.name + "吃饭")
 
    def drink(self):
        print(self.name + "喝水")
 
 
# 创建Cat 类 初始化方法被自动调用
cat = Cat();
# 调用Cat 吃饭的方法
cat.eat();
# 调用Cat 喝水的方法
cat.drink()

带有参数的初始化方法。

image-20230903170217320

4、del 方法

  1. del方法只能有一个参数 self;

  2. 当对象在内存中被销毁的时候,del方法被系统自动调用;

  3. 当使⽤ 类名() 创建对象时,为对象分配完空间后,⾃动调⽤ init ⽅法 ;

  4. 当⼀个对象被从内存中销毁前,会⾃动调⽤ del ⽅法 ;

  5. ⼀个对象的 del ⽅法⼀旦被调⽤,对象的生命周期结束 。

# 定义Cat类
class Cat:
    def __init__(self,name = "小白"):
        self.name = name
 
    def __del__(self):
        print(self.name+"活动已结束,已回窝睡觉")
 
    def eat(self):
        print(self.name + "吃饭")
 
    def drink(self):
        print(self.name + "喝水")
 
 
# 创建Cat 类
cat = Cat();
# 调用Cat 吃饭的方法
cat.eat();
# 调用Cat 喝水的方法
cat.drink()

image-20230903170240145

在函数内定义的变量,函数执行完毕,变量就被销毁了;

在函数外部定义的变量,程序执行完毕,变量就被销毁了;

5、str 方法

在 Python 中,使⽤ print 输出 对象变量,默认情况下,会输出这个变量 引⽤的对象是由哪⼀个类创建的对象,以及在内存中的地址(⼗六进制表示)。

# 定义Cat类
class Cat:
    def __init__(self,name = "小白"):
        self.name = name
 
 
# 创建Cat 类
cat = Cat();
# 打印
print(cat)
 

主要下面的这个内存中的地址每次个机器的不是一样的取决的机器的内存和分配策略 这个不要担心

image-20230903170421431

如果在开发中,希望使⽤ print 输出对象变量时,能够打印⾃定义的内容, 就可以利⽤ str 这个内置⽅法了。

注: str ⽅法必须返回⼀个字符串

# 定义Cat类
class Cat:
    def __init__(self, name="小黄"):
        self.name = name

    def __str__(self):
        return "我是一只可爱的狗狗,名字叫" + self.name


# 创建Cat 类
cat = Cat();
print(cat)

能够打印⾃定义的内容, 就可以利⽤ str 这个内置⽅法了。

注: str ⽅法必须返回⼀个字符串

# 定义Cat类
class Cat:
    def __init__(self, name="小黄"):
        self.name = name

    def __str__(self):
        return "我是一只可爱的狗狗,名字叫" + self.name


# 创建Cat 类
cat = Cat();
print(cat)

image-20230903170630263

😄总结

通过本教程,我们已经了解了Python面向对象编程的核心概念,包括类和对象的定义和关系,以及类的特殊方法如__init__、__str__和__del__方法。

我们学习了如何创建类和对象,如何定义和调用方法,以及如何通过特殊方法来控制对象的创建和销毁过程。我们还学习了如何通过__str__方法来定制对象的字符串表示形式,使其更符合人类的理解和阅读。

希望通过本教程,你已经掌握了Python面向对象编程的基本知识,这将为你后续的Python编程之旅奠定坚实的基础。

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1014590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个工位的演讲

前几天,知乎官方制作了一个视频,感觉这个视频非常不错,推荐给大家看看。 这个短片很有创意,而且,内容也很丰富。 为什么说这个短片很有创意呢?因为它是从一个工位的角度切入的,所谓铁打的工位&a…

基于matlab实现的电力系统稳定性分析摆幅曲线代码

完整程序: clear; clc; t 0; tf 0; tfl 0.5; tc 0.5; % tc 0.05, 0.125, 0.5 sec for 2.5 cycles, 6.25 cycles & 25 cycles resp ts 0.05; m 2.52 / (180 * 50); i 2; dt 21.64 * pi / 180; ddt 0; time(1) 0; ang(1) 21.64; pm 0.9; pm1 2.44;…

解锁大数据宝藏:使用AI预测未来趋势的新方法

文章目录 大数据的价值传统方法与AI的优势使用AI预测未来趋势的新方法1. 时间序列分析2. 自然语言处理(NLP)3. 预测市场趋势 应用前景与挑战应用前景挑战和限制 结论 🎉欢迎来到AIGC人工智能专栏~解锁大数据宝藏:使用AI预测未来趋…

软件设计师考试学习1

前言 计算机组成原理及体系结构 数据的表示 进制的转换 原码反码补码移码 最高位是符号位,负数符号位为1 反码补码正数和原码一样,负数有区别 反码符号位不动,其他位置取反 补码在反码基础上加1 移码是将补码的符号为取反 在原码和反码中…

Sqlserver如何调试存储过程

前提:需要使用Sql Server Managerment Studio 工具进行调试。 步骤: 1.选择存储过程,右键选择“执行存储过程”。操作过后,会生成一个调用存储过程的代码块。 2.以编辑模式打开所以需要调试的存储过程。 3.点击调试按钮进行调…

k8s集群使用ingress转发grafana服务

文章目录 前言一、思路二、grafana准备1. grafana-configmap.yaml2. grafana.yaml 三、ingress准备1. ingress.yaml2. grafana-externalname.yaml3. ingress-nginx-controller 四、 本机host文件准备五、访问测试 前言 在k8s集群中,使用ingress服务转发grafana的页…

苹果是真牛,数据线的钱要赚,换电池钱也要赚,贪婪成性

iPhone15发布会是苹果当前的热点,发布会结束后苹果又传出了一个消息,进一步提高更换电池的价格,显示出苹果意图进一步割韭菜,提升利润,这就有点贪婪成性了吧? 据了解 iPhone 7、8 及 SE 系列由 528 元涨至 …

商淘云八周年 与实体店业务共发展

引言:商淘云主要从事电商平台、B2B订货系统、供应链管理系统的开发和搭建,目前服务的客户有:中商北斗供应链管理集团有限公司、奥克斯物业、苏州广电总台、中国平安、南方新闻网等。 随着时间的流淌,市场不断发展,商淘…

【多线程案例】阻塞式队列

1. 什么是阻塞式队列 阻塞队列是一种特殊的队列. 也遵守 "先进先出" 的原则. 阻塞队列能是一种线程安全的数据结构, 并且具有以下特性: 当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素. 当队列空的时候, 继续出队列也会阻塞, 直到有其他线程往…

性能工程落地的4个阶段

性能工程按照不同的内容和目的划分为4个阶段,分别是线下单系统压测分析阶段、线下全链路压测分析阶段、生产只读业务压测及容量评估阶段、生产读写业务全链路压测及容量评估阶段。(也可以理解为一个企业性能测试体系的发展阶段) 线下单系统压测分析阶段 针对单系统的性能…

第71步 时间序列建模实战:ARIMA建模(Python)

基于WIN10的64位系统演示 一、写在前面 这一期,我们使用Python进行SARIMA模型的构建。 同样,这里使用这个数据: 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever wi…

LeetCode算法动态规划—剑指 Offer 10- II. 青蛙跳台阶问题

目录 剑指 Offer 10- II. 青蛙跳台阶问题 题解: 代码: 运行结果:​编辑 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97(1000000007&#xff…

实现按钮悬停动画

知识点与技巧 伪元素 使用伪元素来作为按钮悬停效果动画展示的元素 z-index 的使用技巧 使用z-index属性来控制按钮和伪元素的层次关系 transform、transition 复习 使用transform、transition两个属性来实现动画的展示 按钮边框动画 切换效果 核心代码 .btn.btn-border-…

Python语言开发环境安装

视频版教程 Python3零基础7天入门实战视频教程 首先去Python官网下载Python安装包 https://www.python.org/ 目前最新版本:Python 3.11.4 直接点击下载。(建议用迅雷下载,速度快) 双击安装包进行Python安装。 勾选下 Add pytho…

3D生成式AI模型、应用与工具大全

当谈到技术炒作时,人工智能正在超越虚拟世界,吸引世界各地企业和消费者的注意力。 但人工智能可以进一步增强虚拟世界,至少在某种意义上:资产创造。 AI 有潜力扩大用于虚拟环境的 3D 资产的创建。 推荐:用 NSDT编辑器…

二叉树(堆)

堆的性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 大堆:任何父亲≥孩子 小堆:任何父亲≤孩子 接下来,我们要做的便是对堆进行增加和删除: 首先是增加操作&#xff0c…

【算法专题突破】滑动窗口 - 找到字符串中所有字母异位词(14)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:438. 找到字符串中所有字母异位词 - 力扣(Leetcode) 这道题很好理解,就是找出从不同位置开始的所有异位词。 2. 算法原理 那我们该如…

下载安装python的详细步骤-2023

目录 一、介绍 二、下载 三、安装 四、测试 一、介绍 读者手册(必读)_csdn文章评分怎么看_云边的快乐猫的博客-CSDN博客 Python 是一种高级编程语言,具有简洁、易读、易学的特点。它由Guido van Rossum于1989年首次发布,并于1…

无涯教程-JavaScript - ACOTH函数

描述 ACOTH函数返回数字的反双曲余切。 语法 ACOTH (number)争论 Argument描述Required/OptionalNumberThe absolute value of Number must be greater than 1. i.e., Number must be must be less than -1 or greater than 1.Required Notes 用于计算双曲反余切的方程为-…

【第200篇原创文章】解决低于1%概率出现的芯片VPSS模块跑飞的问题

在发布SDK内测的时候,我们发现在切换视频分辨率的时候有低概率出现VPSS模块跑飞的情况,概率低于1%,试个两三百次,能出1~2次。切换视频分辨率这个功能在安防产品上也确实存在需求,网络带宽不大好的地方分辨率可以适当下…