面向对象编程是最有效的编程方法之一,在面向对象编程中,你编写表示现实世界中事物和情景的类,并基于这些类来创建对象。使用类来创建对象被称为实例化。

创建和使用类

使用类可以模拟任何东西。下面的实例编写一个表示小狗的的简单类Dog——它表示的布设某个特定的小狗,而是任何小狗,编写这个类后,我们将使用它来创建表示任何特定的小狗的实例。

创建类

根据Dog类创建的每个实例都将存储名字和年龄,我们赋予每条小狗蹲下(sit())和打滚(roll_over())的能力。

这里有很多地方需要注意,首先使用Class关键字定义类,在Python中首字母大写的名称一般是类,其次在类名Dog()的括号中包括Object,实际上在新版的Python 3中括号内不需要添加任何内容。

1、方法__init()__

类中的函数称为方法。前面所学的任何关于函数的一切都适用于方法,但是在调用方法上有所不同。__init()__方法是一个特殊的方法,每当你使用类创建一个实例的时候Python都会自动运行它。这个方法名称中,开头和末尾各有两个下划线,这是一种约束,旨在避免Python默认方法与普通方法产生冲突。

方法__init()__定义包含三个参数:self、name和age。在这个方法的定义中,形参self是必不可少的,并且必须在其他形参前面。当我们Python调用__init()__来创建实例的时候会自动传入self这个参数,self参数是一个指向实例本身的引用,为的是让实例访问类中的属性和方法。需要注意的是我们在使用类创建实例的时候不需要传递self参数,在上个实例中只需要后两个形参(name和age)。

__init()__方法函数体内定义的变量都有self前缀,以self为前缀的变量可以供类的所有方法使用。语句self.name=name是将形参中name的值存储到类的变量name中。像这种可以通过实例访问的变量称为属性。

实际上在类中定义的函数都带有self这个形参。

2、创建实例

下面我们创建一个小狗的实例:

要访问实例的属性,可使用句点表示法。句点表示法在Python中很常见。在这里Python先找到实例my_dog(),再查找与这个实例相关联的属性name。那么对类中的方法也可以用句点表示法来调用。

要调用方法的时候,可依次指定实例和要调用的方法。

类和实例的使用

1、创建一个Car类

下面简单编写一表示汽车的类,它存储了有关汽车的信息。

2、给属性指定默认值

类的每个属性都必须有初始值。在某些情况下可以给属性设定一个默认值,这样在实例化的时候就不必为其提供初始值的形参。

我们在__init()__方法中,创建一个read_odometer的属性,并将其初始值设置为0,这样我们在实例化对象的时候就不必为其增加实参了。

3、修改属性值

修改属性值的方法大致有两种,一种是通过实例直接修改;另一种是通过方法修改。

我们可以直接使用句点表示法直接访问并设置汽车的属性odometer_reading()并将其设置为100。

通过方法修改

继承

在编写类时,并非总是要从空白开始,一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类;而新类称为子类。子类继承父类的所有方法和属性,并且还可以有自己的属性和方法。

1、子类的__init()__方法

创建子类的实例的时候,Python首先完成的任务是给父类所有的属性赋值,这时候子类的方法__init()__需要父类施以援手。

创建子类的时候,父类必须包含在当前文件中且位于子类之前,定义子类的时候括号内必须指定父类名字。子类的__init()__方法内的super()函数是一个特殊的函数,帮助Python将子类与父类连接起来,这行代码让Python调用父类的__init()__方法,函数super()接受两个实参,分别是子类名称和对象self。在Python 3版本中super()函数则不需要参数。

2、给子类定义属性和方法

子类除了包含父类的属性和方法之外,通常还有自己特有的方法和属性,我们修改以上代码

要给子类定义属性,首先要初始化父类的属性,在初始化子类的特有属性

3、重写父类的方法

有时候父类的一些方法并不符合子类的需求,这时候需要在子类中对父类的方法进行重写,为此可以在子类中定义一个与父类需要重写的方法同名的方法,这样Python不会考虑父类中的方法而只会关注你在子类中定义的相应的方法。

【懒懒的Python学习笔记八】相关推荐

  1. Python学习笔记(八)

    Python基础总结 Python基础总结 Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.目前分为Python2.X和Python3.X两个版本,且Python ...

  2. 【懒懒的Python学习笔记七】

    在本章节中将学习编写函数,所谓函数是带有名字的完成特定功能的代码块.要执行函数定义的特定任务,可以调用该函数,所以在程序中将完成特定功能的部分写成函数,这样在多次执行同一任务的时候就无需反复编写代码了 ...

  3. 【懒懒的Python学习笔记九】

    至此,已经掌握了Python的基本技能,在本章中将学习如何进行文件操作. 文件操作 从文件中读取文件 文本数据可存储大量数据,每当需要分析或者修改存储在文件中的信息的时候,读取文件就显得至关重要了. ...

  4. 【懒懒的Python学习笔记六】

    大多数程序旨在最终解决用户问题,为此通常需要从用户那里输入信息,在本章学习中,我们将学习Python的raw_input()函数接受用户输入以及学习while循环来控制程序的运行. 函数raw_inp ...

  5. 【懒懒的Python学习笔记五】

    在这一章中,你将学习到能够将信息关联起来的Python字典,将学习如何访问和修改字典中的信息,同时也会学习如何遍历字典中的数据. 一.一个简单的字典 新建了一个存储用户信息的字典,里面存储了用户姓名. ...

  6. 【懒懒的Python学习笔记一】

    谨以此文献给最爱的詹詹: 选择Python 2 还是 Python 3? 使用2还是3一直是一个争论的要点,但是编程重要的是学习编程思想,语法只是细枝末节的东西!一直纠结2还是3是没有意义的.Pyth ...

  7. 【懒懒的Python学习笔记三】

    在上一章中,我们学习了如何创建列表.访问列表元素和简单的列表排序.那么在本章中,我们将进一步学习如何遍历整个列表和对列表更多的操作. 一.遍历列表 我们经常需要遍历整个列表,对每个元素执行相同的操作, ...

  8. 【懒懒的Python学习笔记四】

    编程的时候常常需要检查一些条件,并据此决定采用什么措施,在Python中,if语句常用来做判断语句. 一.一个简单的示例 下面是一个简短的示例,演示了如何使用if语句进行判断,假如你有一个水果列表,你 ...

  9. 【懒懒的Python学习笔记十】

    在程序运行期间遇到错误,Python会报错.Python使用被称为异常的特殊对象来管理程序运行期间发生的错误.每当发生一个错误,Python会创建一个异常对象,如果你编写了处理该异常的代码,程序将继续 ...

最新文章

  1. 让你提升命令行效率的 Bash 快捷键 [完整版]
  2. Android上玩玩Hook?
  3. 最优化——单纯形法学习心得
  4. .net pdf转图片_图片转PDF怎么转?推荐两种图片转PDF方法
  5. c语言 数组、字符串的形参格式_华中师范大学计算机考研874C语言笔记(一)
  6. linux中LCD之framebuffer设备驱动
  7. google地图静态api使用助手(html源码)
  8. python京东抢购 github_GitHub - DevGuan/jd-autobuy: Python爬虫,京东自动登录,在线抢购商品...
  9. java软尾山地车评测_GT Sensor X Pro 软尾山地自行车测评
  10. Excel|5个神技巧,提高你的数据分析效率~
  11. 猎黑马决策股票炒股软件 主升浪战法 短线涨停
  12. Tensorflow slim库
  13. 电容-贴片陶瓷电容的NPO、C0G、X7R、X5R、Y5V、Z5U
  14. 沈阳建筑学计算机专硕调剂,2020年沈阳建筑大学硕士研究生招生考试网上调剂公告...
  15. 【JavaSE】关于多态那些事儿
  16. 中国国产浏览器有哪些
  17. FastReport 连接mysql
  18. Android Studio无法下载
  19. vb6.0服务器组件安装失败,win10系统安装不上vb6.0的解决方法
  20. Oracle TNS Name方式配置

热门文章

  1. Outlook关闭时最小化到任务栏的完美解决方法
  2. untiy实现文本滚动
  3. 区块链三加一:资产不可复制性
  4. 混血网站诞生 公司相互嫁接成就新商业模式
  5. 我经历的IT公司面试及离职感受
  6. 关于nrm ls时,*(星号)消失问题
  7. ALTAS,LAPACK, SCALAPACK, MUMPS记录
  8. Elasticsearch ILM
  9. Java-满天繁星案例(1)
  10. 避坑:关于两个HC-05主从一体蓝牙模块互连,连不上问题