(十一)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,一经查实,立即删除!

相关文章

ArcGIS,Envi软件中的卷帘工具使用及对比

顾名思义,就像卷帘门一样,当存在多个图层时,卷帘门的一侧显示的是一个图层的信息,而卷帘门的另一侧显示的是另一个图层的信息,感觉似乎有一点像透视眼,此外,还有一种难以描摹的美感。卷帘工具在GIS软件中的作用是不言而喻的,为我们的学习工作带来了很大的方便,为我们完…

ubuntu下amd超频工具_Ubuntu16.04 版预装AMD GPU驱动【最新版】_Linux_Ubuntu-云市场-阿里云...

{"moduleinfo":{"advanList_count":[{"count_phone":4,"count":4}],"title":"云市场服务保障体系","mapList_count":[{"count_phone":4,"count":4}]},"advanList":[{&qu…

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行 …

HealthKit有名无实,疑点重重

苹果在今年的全球开发者大会上发布了全新的iOS系统,其中的HealthKit以及Health app是显著的亮点之一。苹果希望通过HealthKit整合个人健康相关的数据,然而距离该系统的正式发布还有几个月的时间,这个数据平台到底要如何运作目前还有很多疑问。…

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

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

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

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

一键安装lamp脚本--初级版

#!/bin/bash#write by zhang_pc#at 2015.07.21#apache2.2.27 mysql5.1 php5.4#安装说明,由于网速原因,就不下载了,执行脚本前要把源码上传到脚本相同的目录下echo -e "\033[32m this is a lamp 一键安装script\033[0m"echo -e &quo…

(十)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时期的内建接口&…

JAVA 10(多线程)

创建线程:通过对java.lang包的查找,继承Thread类可以创建线程1,建立类继承Thread类2,复写Thread中的ran方法。3,调用线程的start()方法,该方法的作用是,启动线程,调用ran方法。publi…

地球空间与数字测绘知识总结

1、地理空间(geo-spatial) 一般指上至电离层,下至地壳与地幔交界的莫霍面之间的空间区域。上下大约有2000km。 2、自然球体 由地球自然表面所包围的形体称为地球自然形体。

(附)python3 只需3小时带你轻松入门——python常用一般性术语或词语的简单解释

术语一般解释dict 字典一种键值对的关系,一个键代表一个索引,一个键对应一个值index 索引在列表、数组、字典或一般容器中表示一个内容值的“地址”,通过索引可以获取值开发环境当前开发所需要的一些基本软件、硬件或操作系统list 列表一种数…

linux c之判断字符串是不是以另一字符串开始或者结尾

1 问题 判断字符串是不是以另一字符串开始或者结尾 2 代码实现 #include <stdio.h> #include <string.h>/***判断是字符串str是不是以start开始*/ int is_start_with(const char *str, char *start) {if (NULL == str || NULL == start){return -1;}int str_len …

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

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

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

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