python基础知识(17)面向对象 1

news2024/11/25 14:38:04

 

一、面向对象的概念

1、面向对象的两个基本概念

编程语言中,一般有两种编程思维,面向过程和面向对象。

面向过程,看重的是解决问题的过程。

这好比我们解决日常生活问题差不多,分析解决问题的步骤,然后一步一步的解决。

而面向对象是一种抽象,抽象是指用分类的眼光去看世界的一种方法。

Python 就是一门面向对象的语言,

如果你学过 Java ,就知道 Java 的编程思想就是:万事万物皆对象。Python 也不例外,在解决实际问题的过程中,可以把构成问题事务分解成各个对象。

面向对象都有两个基本的概念,分别是类和对象。

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

  • 对象

通过类定义的数据结构实例

2、面向对象的三大特性

面向对象的编程语言,也有三大特性,继承,多态和封装性。

  • 继承

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

例如:一个 Dog 类型的对象派生自 Animal 类,这是模拟"是一个(is-a)"关系(例图,Dog 是一个 Animal )。

  • 多态

它是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。

  • 封装性

“封装”就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类);封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

如果你是初次接触面向对象的编程语言,看到这里还一脸懵逼,不要紧,这是正常的。下面我们会通过大量的例子逐步了解 Python 的面向对象的知识。

 

二、类的定义和调用

1、怎么理解类?

类是什么?

个人认为理解类,最简单的方式就是:类是一个变量和函数的集合。

可以看下下面的这张图。

这张图很好的诠释了类,就是把变量和函数包装在一起。

当然我们包装也不是毫无目的的包装,我们会把同性质的包装在一个类里,这样就方便我们重复使用。

所以学到现在,你会发现很多编程的设计,都是为了我们能偷懒,重复使用。

2、怎么定义类

知道了类是什么样子的,我们接下来就要学习怎么去定义类了。

类定义语法格式如下:

class ClassName():
    <statement-1>
    .
    .
    .
    <statement-N>

可以看到,我们是用 class 语句来自定义一个类的,其实这就好比我们是用 def 语句来定义一个函数一样。

竟然说类是变量和方法的集合包,那么我们来创建一个类。

class ClassA():
    var1 = 100
    var2 = 0.01
    var3 = '两点水'

    def fun1():
        print('我是 fun1')

    def fun2():
        print('我是 fun1')

    def fun3():
        print('我是 fun1')

你看,上面我们就定义了一个类,类名叫做 ClassA , 类里面的变量我们称之为属性,那么就是这个类里面有 3 个属性,分别是 var1 , var2 和 var3 。除此之外,类里面还有 3 个类方法 fun1() , fun2() 和 fun3() 。

3、怎么调用类属性和类方法

我们定义了类之后,那么我们怎么调用类里面的属性和方法呢?

直接看下图:

这里就不文字解释了(注:做图也不容易啊,只有写过技术文章才知道,这系列文章,多耗时)

好了,知道怎么调用之后,我们尝试一下:

 

三、类方法

1、类方法如何调用类属性

通过上面我们已经会定义类了,那么这里讲一下在同一个类里,类方法如何调用类属性的。

直接看个例子吧:

注意看,在类方法上面多了个 @classmethod ,这是干嘛用的呢?

这是用于声明下面的函数是类函数。其实从名字就很好理解了。

class 就是类,method 就是方法。

那是不是一定需要注明这个呢?

答案是是的。

如果你没使用,是会报错的。

如果没有声明是类方法,方法参数中就没有 cls , 就没法通过 cls 获取到类属性。

因此类方法,想要调用类属性,需要以下步骤:

  • 在方法上面,用 @classmethod 声明该方法是类方法。只有声明了是类方法,才能使用类属性
  • 类方法想要使用类属性,在第一个参数中,需要写上 cls , cls 是 class 的缩写,其实意思就是把这个类作为参数,传给自己,这样就可以使用类属性了。
  • 类属性的使用方式就是 cls.变量名

记住喔,无论是 @classmethod 还是 cls ,都是不能省去的。

省了都会报错。

2、类方法传参

上面我们学习了类方法如何调用类属性,那么类方法如何传参呢?

其实很简单,跟普通的函数一样,直接增加参数就好了。

这个就直接上例子了:

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

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

相关文章

知乎热议:未来几年,AI技术在科研领域将有哪些新的发展趋势或突破?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 一年多以来&#xff0c;各种国内外的AI模型和应用应接不暇&#xff0c;从刚开始ChatGPT一家独大&#xff0c;到现在的百花齐放&#xff0c;各种AI模型各有千秋&#xff0c;一时…

CVE-2023-48795修复方法

CVE-2023-48795修复方法 1、修复原理2、检测漏洞3、修复漏洞4、成功修复 近期nessus扫描经常出现一个中危漏洞CVE-2023-48795&#xff0c;但网上的修复方法清一色的将openSSH升级到9.6p1版本 而我在升级当中处处碰壁&#xff0c;甚至于差点给服务器都干崩溃&#xff0c;特意研究…

Coursera: An Introduction to American Law 学习笔记 Week 01: Tort Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors SyllabusWeek 01: Tort LawKey Tort Law TermsTort Law: Part …

AI写作软件:一键生成原创文案,效率就是高

对于文案创作人员来说&#xff0c;常期的创作都会出现灵感枯竭现象&#xff0c;从而导致文案创作人员写不出文案的问题&#xff0c;那么如何解决文案写不出来的问题呢&#xff1f;别急&#xff0c;本文会给大家分享出好的解决方法&#xff01;大家要知道&#xff0c;随着人工智…

uniapp微信小程序开发踩坑日记:Vue3 + uniapp项目引入Echarts图表库

一、下载插件包 下载地址如下&#xff1a; lime-echart: 百度图表 echarts&#xff0c;uniapp、taro 使用 echarts 图表&#xff0c;全面兼容各平台小程序、H5、APP、Nvue 将以下两个文件夹放到项目的components里 同样地&#xff0c;将静态资源文件夹下内容放到自己项目的s…

c++高级篇(三) ——Linux下IO多路复用之poll模型

poll模型 前言 poll模型与select的实现原理相近&#xff0c;所以绝大数的原理其实可以参考select&#xff0c;我们这里对二者的相同点不做过多探究&#xff0c;如果有需要可以去看一下博主的上一篇文章&#xff1a; c高级篇(二) ——Linux下IO多路复用之select模型 这里我们只…

全志ARM-蜂鸣器

sh操作准备&#xff1a; 1.使Tab键的缩进和批量对齐为4格 在/etc/vim/vimrc 中添加一项配置 set tabstop 4; 也可以再加一行 set nu显示代码的行数 vim的设置&#xff0c;修改/etc/vim/vimrc文件&#xff0c;需要用超级用户权限 /etc/vim/vimrc set shiftwidth4 设置批量…

OpenTiny开源之夏编程达人集结令:4月30日正式上线,寻找最强代码战士!

五一来袭&#xff0c;OpenTiny 开源之夏编程项目正式上线&#xff01; 已梦为马&#xff0c;不负韶华 聚焦前端&#xff0c;OpenTiny 喊你来参加编程活动了 10个赛题任你选&#xff01; 我们诚挚邀请你参与本次 OpenTiny 开源之夏编程活动&#xff0c; 用你的智慧和才能&a…

[移动通讯]【无线感知-P1】[从菲涅尔区模型到CSI模型-5]【The Riemann Mapping Theorem】

前言&#xff1a; mobius变换保角性证明一直困扰我很久.当看完黎曼映射定理以及结合MIT的数学证明 深刻的感触到数学之美&#xff0c;“知之深&#xff0c;情之切”。 黎曼映射&#xff08;The Riemann Mapping&#xff09;定理是复分析最深刻的定理之一&#xff0c;也是复变函…

帮助文档更新了

原先的帮助文档比较简单&#xff0c;大家可能对大部分功能都比较陌生&#xff0c; 最近对帮助文档进行了一轮改版&#xff0c;整个帮助文档更加详细了&#xff0c;对新用户更加友好&#xff0c;这里给大家介绍一下最新的帮助中心 大家进入官网&#xff08;zyjj.cc&#xff09;的…

【再探】设计模式— 工厂方法、单例及原型模式

创建型设计模式是处理对象创建的设计模式&#xff0c;主要特点是“将对象的创建与业务代码分离”。一共有五种&#xff1a;工厂方法模式、单例模式、原型模式、抽象工厂模式及建造者模式。 1 单例模式 需求&#xff1a; 在整个系统中只需要一个实例。管理共享资源&#xff0…

看见游戏出海赛道的新机会

目前游戏出海的主要地区和国家都已经非常成熟&#xff0c;原有的发行方式方法也基本标配化&#xff0c;除了产品玩法的差异化&#xff0c;多元化渠道及获量新方式是提升竞争力的有效手段 4月24日&#xff0c;在深圳南山区&#xff0c;VERYCLOUD睿鸿股份与罗斯基、热力引擎共同主…

基于Spring Boot的外卖点餐系统设计与实现

基于Spring Boot的外卖点餐系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 网站首页界面图&#xff0c;通过进入网站可以查看首页、…

新时代教师口才演讲稿(3篇)

新时代教师口才演讲稿&#xff08;3篇&#xff09; 新时代教师口才演讲稿&#xff08;一&#xff09; 尊敬的各位领导、亲爱的同事们&#xff1a; 大家好&#xff01; 今天&#xff0c;我站在这里&#xff0c;深感荣幸与激动。在这个新时代里&#xff0c;教师的口才不仅仅是传…

后端java部署教程,docker配置解读(linux用docker部署新手入门)

文件夹结构 然后解读几个启动脚本 首先dockerFile # 使用anapsix/alpine-java:8_server-jre_unlimited作为基础镜像 FROM anapsix/alpine-java:8_server-jre_unlimited# 设置维护者信息 MAINTAINER adminxiaohuaikeji.com# 设置时区为Asia/Shanghai RUN ln -sf /usr/share/z…

组装nas的 神器 n100 ,改天组装一个!

N100的CPU性能虽然不是很强&#xff0c;性能接近4代i5移动端&#xff0c;但功耗很低&#xff0c;TDP只有6W&#xff0c;而且有个24单元的核显&#xff0c;解码视频能力不差。N100和Intel的i系列CPU是不同厂商生产的&#xff0c;并且它们的设计和架构也有所不同&#xff0c;因此…

Vitis HLS 学习笔记--Schedule Viewer 调度查看器

目录 1. 简介 2. Schedule Viewer详解 2.1 视图说明 2.1.1 Operation\Control Step 2.1.2 周期关系图 2.1.3 Schedule Viewer 菜单栏 2.1.4 属性视图 2.2 内容说明 2.2.1 实参&#xff08;b&#xff09;解释 2.2.2 实参&#xff08;a&#xff09;解释 2.2.3 变量&am…

# Windows 环境变量 Path 显示样式更改

Windows 环境变量 Path 显示样式更改 1、传统 Path 环境变量显示&#xff1a; ---》键盘上按【WIN I 】打开系统【设置】 ---》依次点击 ---》【系统】 ---》【系统信息】 ---》【高级系统设置】 ---》【高级】 ---》【环境变量】。或者依次点击&#xff1a; ---》右键 【我…

利用kimi等大模型进行运维参数解析和调优

在运维时&#xff0c;经常遇到很多参数&#xff0c;有些参数不知道意义&#xff0c;知道意义的也有些不知道合理参考值是多少。利用kimi等大模型来当老司机&#xff0c;轻松解决运维难题。 例如在运维hive参数时&#xff0c;有些不知道作用&#xff0c;提示次如下 你的角色是…

iOS上的UI是如何渲染出来的? 深入浅出UIKit渲染

我们在代码中写的View、Image等组件&#xff0c;最终是如何一步步渲染到屏幕上的呢&#xff1f;触摸、动画等是如何实现的&#xff1f;我们可以利用这些知识做哪些优化呢&#xff1f; 本文先从屏幕物理层原理出发&#xff0c;一步步介绍渲染流程&#xff0c;然后介绍iOS的UIKi…