对象和类

对象包含两种特征:

  • 状态
  • 行为
    类:某种类型集合的描述。
    属性:类本身的一些特性。
    方法:类所能实现的行为。

类的定义

类的定义的语法

class classname[(父类名)]:
[成员函数及成员变量]

classname是这个类的名称,而父类名是可选的。但定义父类以后,子类则具有父类的相应属性和方法。

  • _init_构造函数:初始化对象的各个属性
  • _del_析构函数:销毁对象

类的定义示例


创建一个student类,每个student类型的对象都包含三个信息:

  • name
  • hours
  • qpoints

为了程序命名更加规范,将定义的参数与类内变量的名字相对应,构造函数接收float、int或string类型的参数。

在上述类的定义里,将hoursqpoints的类型强制转换成float类型。

建立类的方法

面向对象的特点

  • 封装
  • 多态
  • 继承

封装

  • 抽象对象(我的理解是和形参类似的意思)
  • 打包数据和操作(数据和操作放到一起)
  • 对象的实现和使用相互独立
  • 支持代码复用

比如下面的Projectile类:

  • Projectile类封装了投射体的属性和方法
  • 主程序不关心铅球内部实现
  • Projectile类可以被多个程序和对象使用

###多态

  • 对象怎么回应消息
  • 同一函数名启用不同方法

比如一个图形对象列表:

  • 列表包含Circle、Rectangle、Polygon
  • 使用相同代码,画出列表所有的图形
    下面这个代码在obj分别是Circle、Rectangle、Polygon时,执行Circle、Rectangle、Polygon的draw方法。
for obj in objects:obj.draw(win)
  • 灵活性

继承

一个类(subclass)可以借用另一个类(superclass)的行为。

  • 避免操作重复
  • 提升代码复用程度(新类经常基于已存在的类)

比如员工信息系统:

  • Employee类,包含员工的一般信息。比如有homeAddress()方法
  • 子类正式员工SalariedEmployee、子类临时员工HourlyEmployee。二者作为Employee类的子类,二者可以继承homeAddress()方法

学生GPA计算的完整代码

计算铅球位置的示例

程序主函数

定义Projectile类

面向对象的程序化模块

要先引入Projectile类:

from Projectile import *

[再学Python] - 面向对象的程序设计- 对象和类相关推荐

  1. Python面向对象设计:对象与类,继承————以大鱼吃小鱼为例

    前言 编写类时,并非总是要从空白开始.如果要编写的类是另一个现成类的特殊版本,可使用继承.一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类 ...

  2. [Python3]Python面向对象的程序设计

    [Python3]Python面向对象的程序设计 一.面向对象的程序设计的由来 1.第一阶段:面向机器,1940年以前 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行 ...

  3. 【十三】python面向对象之类和对象

    目录 一.什么是类和对象 二.类 1.初始类 2.创建一个类 3.类的作用 3.1.属性引用(类名.属性) 3.2.查看类的属性 3.3.特殊的类属性 3.4.实例化 4.抽象类 4.1.在pytho ...

  4. 复习Python的Day40:对象、类的从属关系

    复习Python的第四十天 习题 45: 对象.类.以及从属关系 从整个计算机科学的角度来说,对象是对客观事物的抽象,类是对对象的抽象,大类是对小类的抽象.类和对象都是一种抽象的数据类型. 对象(Ob ...

  5. Python面向对象编程:深度认识类class

    类中的其他内置函数/属性 前文代码展示了'__init__'函数,这个是类的内置函数,默认不写就没有执行多余操作. 在Python中类这种结构还包含了下面的一些内置函数属性: __name__ 类名字 ...

  6. 《笨方法学 Python 3》42.对象、类及从属关系

    有个重要的概念必须弄明白,那就是'类'和'对象'的区别. 原文中花费了大量语段来描述,我就按个人理解简单的归纳一下,可能不对,如有误,请指出: 1.类:就是具有相同属性的方法的集合,此处的方法就是指的 ...

  7. 零基础学python实战-零基础学习python_类和对象(36-40课)

    今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...

  8. Python面向对象之定制对象独有特征

    类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个 一.引入 class OldboyStudent:school = 'o ...

  9. 第三次学JAVA再学不好就吃翔(part113)--对象操作流

    学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...

最新文章

  1. 沫沫金【实践可用】--web工程ORM数据库链接(JDBC)链接集群库||普通库,两种标准...
  2. oracle元数据存储在表空间,[Oracle] dbms_metadata.get_ddl 的使用方法总结
  3. An In-Depth Look at the HBase Architecture--转载
  4. React单页如何规划路由、设计Store、划分模块、按需加载
  5. LeetCode 1971. Find if Path Exists in Graph(图的遍历)
  6. SpringBoot:如何处理SprintBoot提示Whitelabel Error Page以及了解原因?
  7. ApacheHttpServer修改httpd.conf配置文件
  8. 【软件工程】软件复用
  9. 香港首个港人“首置项目”超额认购逾44倍
  10. DFS和BFS算法介绍
  11. 区块链项目开发指南大纲
  12. 名言名人2008-11-22
  13. 【C语言】打印一个爱心
  14. 提莫攻击 findPoisonedDuration
  15. 百度地图 雷达/地理编码 功能使用
  16. stm32 关于GPIO寄存器操作
  17. 学生-课程数据库—初识sql语句(04)(注释版)
  18. 《永不止步》--[奥]力克胡哲
  19. Docker常用命令整理
  20. 短视频运营:如何做自媒体?新手入门的详细操作分享

热门文章

  1. 干货:科大讯飞最新语音识别系统和框架深度剖析
  2. TensorFlow发布语音识别入门教程,附1GB数据集代码
  3. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...
  4. 【java笔记】异常处理
  5. 【动态规划】P1004 方格取数(四维dp模板题)
  6. android计算汇率代码,android studio 开发实例 连接网络获取汇率
  7. html如何隐藏二进制字符串,如何用二进制代码隐藏字符串?
  8. oracle dba 连不上,Oracle10g的DBA无法登录解决方案
  9. Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4
  10. Java执行jar总结