Python类与对象实验

一、任务描述

  本实验任务主要对Python类与对象进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python类与对象的关系,并对Python类与对象的基本操作进行整理并填写工作任务报告。

二、任务目标

1、掌握Python类的创建

2、掌握类对象

三、任务环境

Ubuntu16.04、Python2.7

四、任务分析

  面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

 

 ♥ 温馨提示
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。类不代表具体的事物,而对象表示具体的事物。

五、任务实施

步骤1、环境准备

  右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令 打开终端。

  通过【cd /home】切换到home目录下。【ls】查看该目录下的所有内容。

图1 切换目录

  【mkdir class】在home目录下创建class文件夹。

图2 创建文件夹

步骤2、类

  【cd class】切换到class目录下,【vim class1.py】回车后创建并编辑名为class1的Python文件

图3 创建Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

  在Python中,定义类是通过class关键字。class后面紧接着是类名,即Brid,类名通常是大写开头的单词,紧接着是(object)。

  用class关键字定义一个类,类名为鸟(Bird)。括号内的关键object,也就是‘东西’的意思。既某一个个体也为对象。一个类别下,可以有多个对象。

图4 编辑Python文件

  直接定义在类内部的属性为类属性,为这个类对象所有,所有类的实例可以访问。定义两个量,一个用于说明鸟类有羽毛(feather),另一个用于说明鸟类的繁殖方式(reproduction),这两个量成为类的属性。

图5 类属性

  除了用属性来分辨类别外,也可以根据这类东西可以做什么来区分,比如鸟会飞,这样的一些行为属性成为方法。通过在类的内部定义函数来说明方法。

  在鸟类中新增一个方法属性,表示鸟叫的方法chirp(),第一个参数是self,为了在方法内部引用对象自身。

图6 方法

步骤3、对象

  通过调用类,可以创造出这个类的对象。

  说明summer属于鸟类的一个对象。

图7 创建对象

  作为对象的summer将拥有鸟类的属性和方法。对属性的引用是通过对象.属性的形式实现的。

图8 调用类属性

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python class1.py】执行class1的Python文件。

  打印‘egg’,得到summer所属类的繁殖方式。

图9 运行Python文件

  也可以调用方法,让summer执行鸟类允许的动作。

  再次进入class1.py文件编辑状态,修改程序。

图10 编辑Python文件

  再次运行class1.py程序。打印‘jijiji’。

  在调用方法时,只传递一个参数,就是字符创‘jijiji’,self只用在类定义的内部,所以调用方法时不需要对self传入数据。

图11 运行Python文件

  对于全部个体来说,某些属性存在个体差异,比如summer是黄色的,但并非所有的鸟都是黄色的,除了共性的属性外,还需要说明个性的对象属性,可以通过self来操作对象的属性。

  再次进入class1.py文件编辑状态,修改程序。

  在set_color方法中,通过self参数设定对象属性color,和类属性一样,通过对象.属性的方式来操作对象属性,由于对象属性依赖于self,所以对象属性没办法像类属性一样,在类下方赋值。

图12 编辑Python文件

  再次运行class1.py程序。打印‘yellow’。

图13 运行Python文件

  Python提供了初始化对象属性的方法,如__init__()__add()__等,可以在类中设定特殊方法,__init__()方法会在每次创建对象时自动调用。

  再次进入class1.py文件编辑状态,修改程序。

  通过__init__()说明类的初始化方式。当对象建立时,__init__()会被调用,设定了sound的对象属性,在chirp()方法中,就可以通过self调用对象属性。

图14 编辑Python文件

  再次运行class1.py程序。

图15 运行Python文件

  self参数除了操作对象属性外,还可以在一方法内部调用同一类的其他方法。
再次进入class1.py文件编辑状态,修改程序。

图16 编辑Python文件

  再次运行class1.py程序。重复打印‘jijiji’5次。

图17 运行Python文件

转载于:https://www.cnblogs.com/yu-1104/p/9050501.html

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

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

相关文章

matlab 五点三次平滑算法

(2012-04-23 21:01:31) 转载▼标签: 杂谈 分类: matlab http://www.ilovematlab.cn/thread-71818-1-1.html 这里提供一个函数mean5_3(五点三次平滑算法)对数据进行平滑处理: load V1.mat subplot 211; plot(V1); ylim([2000 7000]); grid; y…

您在2016年OpenStack峰会上错过的事情

今年我第一次参加了4月25日至29日在德克萨斯州奥斯汀举行的OpenStack峰会。 今天结束了,我要回家了,我想回顾一下,从我的角度分享你错过的事情。 作为以应用程序开发人员为重点的技术传播者,转移到包含Red Hat产品组合的基础架构…

C/C++中的常量指针与指针常量

常量指针 常量指针是指向常量的指针,指针指向的内存地址的内容是不可修改的。 常量指针定义“const int *p&a;”告诉编译器,*p是常量,不能将*p作为左值进行操作。但这里的指针p还是一个变量,它的内容存放常量的地址&#xff0…

基于javafx的五子棋_JavaFX中基于表达式的PathTransitions

基于javafx的五子棋在JavaFX中,您可以使用PathTransition对象为路径上的节点设置动画。 PathTransitions使用Shape对象来描述它们需要沿其动画的路径。 JavaFX提供了各种类型的形状(例如,多边形,圆形,多边形&#xff0…

Drools 6.4.0.Final提供

最新和最出色的Drools 6.4.0.Final版本现已可供下载。 这是我们先前构建的增量版本,对核心引擎和Web工作台进行了一些改进。 您可以在此处找到更多详细信息,下载和文档: Drools网站 资料下载 文献资料 发行说明 请阅读下面的一些发行要…

软考解析:2014年下半年下午试题

软考解析:2014年下半年下午试题 第一题:数据流图 第四题:算法题 第五题:Java设计模式 转载于:https://www.cnblogs.com/MrSaver/p/9073778.html

malloc()参数为0的情况

问题来自于《程序员面试宝典(第三版)》第12.2节问题9(这里不评价《程序员面试宝典》,就题论题): 下面的代码片段输出是什么?为什么? char *ptr;if((ptr (char *)malloc(0))NULL)put…

C++ 关键字typeid

转载网址:http://www.cppblog.com/smagle/archive/2010/05/14/115286.aspx 在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用…

使用Apache Camel进行负载平衡

在此示例中,我们将向您展示如何使用Apache Camel作为系统的负载平衡器。 在计算机世界中,负载均衡器是一种充当反向代理并在许多服务器之间分配网络或应用程序流量的设备。 负载平衡器用于增加容量(并发用户)和应用程序的可靠性。…

Java8-Guava实战示例

示例一&#xff1a; 跟示例三对比一下&#xff0c;尽量用示例三 List<InvoiceQueryBean> invoiceQueryBeanList new ArrayList<>(); List<String> invoices Lists.newArrayList(Iterators.transform(invoiceQueryBeanList.iterator(), new Function<Inv…

java项目构建部署包

博客分类&#xff1a; JAVA Java 工程在生产环境运行时&#xff0c;一般需要构建成一个jar&#xff0c;同时在运行时需要把依赖的jar添加到classpath中去&#xff0c;如果直接运行添加classpath很不方便&#xff0c;比较方便的是创建一个shell脚本。在公司项目中看到把工程代码…

表达式前后缀表达形式 [zz]

(2012-09-12 13:08:39) 转载▼标签&#xff1a; 杂谈 转自&#xff1a;http://blog.csdn.net/whatforever/article/details/673853835,15,,80,70,-,*,20,/ //后缀表达方式(((3515)*(80-70))/20&#xff09;25 //中缀表达方式 /,*,,35,15,-,80,70, 2…

引用:初探Sql Server 执行计划及Sql查询优化

引用:初探Sql Server 执行计划及Sql查询优化 原文:引用:初探Sql Server 执行计划及Sql查询优化初探Sql Server 执行计划及Sql查询优化 收藏MSSQL优化之————探索MSSQL执行计划作者&#xff1a;no_mIss最近总想整理下对MSSQL的一些理解与感悟&#xff0c;却一直没有心思和时间…

Lombok,自动值和不可变项

我喜欢布兰登&#xff08;Brandon &#xff09;在博客文章中比较Project Lombok &#xff0c; AutoValue和Immutables的建议 &#xff0c;而这篇文章试图做到这一点。 我已经简要概述了Project Lombok &#xff0c; AutoValue和Immutables &#xff0c;但是这篇文章有所不同&am…

用interrupt()中断Java线程

Javathread 最近在学习Java线程相关的东西&#xff0c;和大家分享一下&#xff0c;有错误之处欢迎大家指正&#xff0e; 假如我们有一个任务如下&#xff0c;交给一个Java线程来执行&#xff0c;如何才能保证调用interrupt()来中断它呢&#xff1f; Java代码 class ATask imple…

JAVA分代收集机制详解

Java堆中是JVM管理的最大一块内存空间。主要存放对象实例。在JAVA中堆被分为两块区域&#xff1a;新生代&#xff08;young&#xff09;、老年代&#xff08;old&#xff09;。堆大小新生代老年代&#xff1b;&#xff08;新生代占堆空间的1/3、老年代占堆空间2/3&#xff09;新…

高可用架构

转载于:https://www.cnblogs.com/138026310/p/9088341.html

压缩vmware中的ubuntu系统(虚拟机瘦身大法)

压缩vmware中的ubuntu系统&#xff08;虚拟机瘦身大法&#xff09; 前提:你的虚拟机大小 < 你放置虚拟机的磁盘的剩余空间 1.在Termial(终端)里 运行"sudo vmware-toolbox"(需要root权限) 2.选择“shrink”选项卡 3.选中“/”&#xff0c;点击“shrink”按钮 4.完…

认识jQuery

一、JavaScript库 把一些浏览器兼容性的代码或者需要常用的函数装在一个js文件里,封装了很多js代码的一个js文件就是一个库 二、jQuery 是一个JavaScript库&#xff0c;免费开源的&#xff0c;体积小&#xff0c;链式编程&#xff0c;隐式迭代&#xff0c;很多优点jQuery 的功能…

Axis2 WebService(配置、发布、调用)

from:http://www.lifeba.org/arch/java_axis2_webservice.html 准备工作 1、下载&#xff1a;axis2-1.5.4-bin.zip,axis2-1.5.4-war.zip 下载地址&#xff1a;http://axis.apache.org/axis2/java/core/ 2、环境变量设置 AXIS2_HOME E:\research\axis2-1.5.4-bin\axis2-1.5.4 J…