(十一)python3 只需3小时带你轻松入门——面向对象


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

例如:
人是一种类型,拥有年龄、身高、体重、性别等属性。具体一个人是一个对象,例如小明;小明有年龄、身高、体重、性别等属性。小红也是人,所以具有相同属性。

类变量
类变量在整个实例化的对象中是公用的。或者可以理解为属性。
创建一个人的类,类里面有类变量,使用类变量记录人的年龄、性别、身高等属性。

类的定义:

class HumanClass:age=1sex='未知'stature=60weight=3

以上类我定义了一个年龄为1,年龄为未知,身高为60,体重为3的类。
类的定义使用class开头,后面接类名,然后冒号结束;类里面的属性定义需要使用缩进,表示代码块。

类方法
类中定义的函数。
例如狗有个方法就是发声,汪汪叫;定一个方法用来输出汪汪,模拟狗的叫声。

class AnimalClass:age=0sex='未知'ismammal=0sound='呜呜叫'def say(self):print(self.sound)

以上代码定义了一个动物类,名为AnimalClass,其中有类变量(或说属性),age代表年龄、sex代表性别、sound代表发出的声音、ismammal代表是否是哺乳动物,0代表不是,1代表是;定义了一个函数,类里面的函数跟外面的自定义函数定义类似,这个函数输出sound变量。

函数里面默认传入一个self,默认代表类本身,如果调用sound不使用self,那么这个类方法将会不识别,不认识sound变量,传入self后,使用self运用点“.”运算符可以获取到当前类的sound变量。
我们新建一个对象:

class AnimalClass:age=0sex='未知'ismammal=0sound='呜呜叫'def say(self):print(self.sound)dog = AnimalClass()
dog.say()

这个时候dog为AnimaClass的对象,拥有这个类里面的所有属性和方法。我们使用dog调用say(),也就是dog这个对象使用say方法,在AnimalClass类中,say函数是输出叫声的文字,那么结果将会显示出叫声“呜呜叫”。
查看结果:
在这里插入图片描述
我们可以直接使用dog这个对象使用点“.”运算符获取它自身的属性sound,配合print()函数作为输出,也一样可以达到效果:

class AnimalClass:age=0sex='未知'ismammal=0sound='呜呜叫'def say(self):print(self.sound)dog = AnimalClass()
dog.say()
print(dog.sound)

结果如下:
在这里插入图片描述
继承
即一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

派生类:例如我们创建一个类是动物,动物的基本属性有毛发、眼睛、呼吸器官等。我们创建一个鸟的类别,继承了动物类,那么鸟这个类别是动物;在这里鸟就是派生类,动物就是基类。

class AnimalClass:age=0sex='未知'ismammal=0sound='呜呜叫'def say(self):print(self.sound)class BirdClass(AnimalClass):sound='唧唧叫'
maque=BirdClass()
maque.say()

以上代码我们新建了一个BirdClass鸟的对象,在BirdClass类后面使用一个圆括号,圆括号里面的是基类,这个类继承AnimalClass这个类,拥有这个对象的属性和方法。所以在BirdClass中没有看到其它方法和变量,只有一个sound把呜呜叫改成了唧唧叫,毕竟是鸟,一般都是唧唧叫吧。
在这里重新给sound赋值叫做重写,我们重写了其中一个属性。不仅类变量可以重写,方法也可以重写。

类方法重写
如果从父类继承的方法不能满足子类的需求,可以
对其进行改写,这个过程叫方法的覆盖,也称为方
法的重写。
在这里我们并没有重写say方法,但是BirdClass还是继承了基类的方法。我们新建了一个BirdClass的对象maque(麻雀),使用maque调用say方法,结果如下:
在这里插入图片描述
结果是“唧唧叫”,因为我们在BirdClass类中重写了叫声sound变量。
接下来我们尝试一下方法重写。

class AnimalClass:age=0sex='未知'ismammal=0sound='呜呜叫'def say(self):print(self.sound)class BirdClass(AnimalClass):sound='唧唧叫'def say(self):print('我是鸟类,我会',self.sound)
maque=BirdClass()
maque.say()

以上代码在BirdClass类中重写了say方法,在print中添加了’我是鸟类,我会’,字符串。
查看运行结果
在这里插入图片描述

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

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

相关文章

javascript:with的用法以及延长作用域链

转自:http://lllt.iteye.com/blog/1246424 《Javascript高级程序设计(第二版)》第66页中提到:“由于with语句的变量对象是只读的,结果url就成了函数执行环境的一部分,因而可以作为函数的值被返回。”&#…

linux之pmap命令查看进程的地址空间和占用的内存

1 问题 我们怎么知道进程占用的内存多大 2 我们可以使用pmap命令 pmap命令用于显示一个或多个进程的内存状态,报告进程的地址空间和内存状态信息。 一般使用 pmap pid 一般参数选项如下 -x extended显示扩展格式 -d device显示设备格式 -q quiet不显示header/footer行 …

【OAuth2】:赋予用户控制权的安全通行证--原理篇

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于OAuth2的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.什么是OAuth? 二.为什么要用OAuth?…

坚持建设国家自主信息体系,龙芯中科胡伟武“419”论坛畅谈LoongArch生态建设蓝图...

4月19日,第五届关键信息基础设施自主安全创新论坛在北京召开,这也是龙芯中科正式发布自主指令系统LoongArch一周年之际。在本次论坛上,龙芯中科董事长胡伟武发表了《龙架构(LoongArch)生态建设》的演讲,围绕…

(十)python3 只需3小时带你轻松入门——模块与包

模块 一般情况下,是一个以.py为后缀的文件。使用import导入。我们创建一个py文件,名为myprint,该py文件作为模块,在里面定义一个函数名为myprint: def myprint():print(这是我的print模块)保存后,在同目录…

【ArcGIS风暴】ArcGIS 10.6创建规则格网(渔网fishnet)图文经典详解

GIS中常常需要地图分幅与编号,或者需要按照规则格网(三角网、矩形网等)去批量裁剪或提取矢量和栅格数据,相关内容可以参看下面的文章。本文主要详细讲解ArcGIS10.6软件中创建渔网的方法,为地图分幅或规则裁剪做好数据准备。 ArcGIS批量裁剪提取或分幅方法总结参考文章: 《…

计算机转财经专业考试考什么,高三对口升学第三次模拟考试财经基础课计算机专业课...

商丘市三高2012-2013学年度第二学期第五次模考《计算机专业专业课》试卷一、选择题(每小题2分,共100分。)1、在Access中,建立的数据库文件的扩展名为()。(A)dbt (B)dbf (C)mdf (D)mdb2、如果“通讯录”表和“籍贯”表通过各自的“籍贯代码”字段建立了一…

linux之wget和curl如何携带cookie进行链接访问

1 问题 wget和curl如何携带cookie进行链接访问 2 解决办法 1) curl携带cookie curl --cookie "key=value" "链接地址" 这里的链接一定要加上双引号,如果链接太长,可能有问题. 如下 curl --cookie "name=zhangsan" "http://localhost…

xshell通过隧道连接_DNS安全之隧道攻击

DNS隧道攻击原理:即协议封装,IP over DNS,将其他协议封装在合法的dns请求和应答报文中,clent端通过构造特殊的域名记录请求发送数据给server,server端通过构造特殊的txt记录值来回应数据给client。其特点:请…

C#内建接口:IEquatable泛型

这节来讲一下泛型接口:IEquatable。IEquatable泛型接口处于System.Runtime命名空间下,最早在.NET Framework 2.0中发布,只有泛型版本。像之前我们讲过的IComparable,IEnumerable接口,它们属于是1.0时期的内建接口&…

联想台式计算机 不启动u盘,新电脑不识别u盘启动盘?不用送修,自己就能搞定!...

原标题:新电脑不识别u盘启动盘?不用送修,自己就能搞定!新买的电脑想要通过u盘启动来装系统,但是一些用户却遇到难题了,以为制作好u盘启动盘就能直接开机启动了。殊不知,很多新电脑都是预装的win…

Hadoop(三)通过C#/python实现Hadoop MapReduce

MapReduceHadoop中将数据切分成块存在HDFS不同的DataNode中,如果想汇总,按照常规想法就是,移动数据到统计程序:先把数据读取到一个程序中,再进行汇总。但是HDFS存的数据量非常大时,对汇总程序所在的服务器将…

python简介及环境安装

Python的创始人为荷兰人吉多范罗苏姆 。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释…

晋中学院计算机考研,晋中学院有多少人死在考研路上

晋中学院有多少人死在考研路上(2011-05-23 20:34:30)标签:日记杂谈有一句话叫作:长江后浪推前浪,前浪死在沙滩上,用来形容少年老成与故人的可怜。转眼间到了谋取出路的时候了,班上几乎所有的人都在那里嚷嚷的要考研,但…

解决ArcGIS 9.3卸载时出现invalid install.log file的方法

地信君都知道,ArcGIS 9.3 License卸载时常出现“invalid install.log file”的错误提示,而导致卸载失败,如下:

使用virt-install安装kvm虚拟机时需要的问题

使用virt-install安装kvm虚拟机时需要的问题今天在做kvm的实验时,使用virt-install安装虚拟机的过程中遇到了一些问题,其中有一个问题弄了好久都没有弄好,不过现在已经好了。由于我使用virt-install命令安装虚拟机的,其命令如下&a…

从同步函数 hello-world-dotnet 开始探索OpenFunction

OpenFunction[1] 是一个现代化的云原生 FaaS(函数即服务)框架,它引入了很多非常优秀的开源技术栈,包括 Knative、Tekton、Shipwright、Dapr、KEDA 等,这些技术栈为打造新一代开源函数计算平台提供了无限可能&#xff1…

还不会制作游戏脚本解放双手?那是你不会超强自动化框架AirTest!

最近朋友问我能不能写一个自动化,帮他解放一下双手。我想了想,在我知识里很多辅助脚本制作工具,想想那些可能会有一堆局限性,想到了Python有自动化测试游戏框架或者工具,但是一直没有了解,搜了下资料&#…

AirTest 基本使用及框架浅剖析——五分钟上手制作游戏辅助

简介 Airtest Project 是为编写自动化脚本,达到提升测试效率的一整套解决方案。它可以轻松的扩展到多平台、多引擎上;如基础的 Android和IOS手机应用、App;Windows上的应用等。 学习使用 Airtest Project 很容易,由于 Airtest P…

计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...

3.2.1 数据传送指令1. MOVOPRD1,OPRD2MOV是操作码,OPRD1和OPRD2分别是目的操作数和源操作数。该指令可把一个字节或一个字操作数从源地址传送到目的地址。源操作数可以是累加器、寄存器、存贮器以及立即操作数,而目的操作数可以是累加器、寄存器和存贮器…