有个重要的概念必须弄明白,那就是‘类’和‘对象’的区别。

原文中花费了大量语段来描述,我就按个人理解简单的归纳一下,可能不对,如有误,请指出:

1.类:就是具有相同属性的方法的集合,此处的方法就是指的函数,一个类里面包含大量的函数(方法),这些函数之间具有共同之处。

2.对象:对象就是类的实例化,类就是本体。本体是无法直接调用的,而对象就是类的副本,分身之类的东西,通过将类实例化得到对象,然后像变量一样赋值给一个东西,就可以通过这个东西调用这个类里面的方法。

3.从属关系:is-a(是什么)和has-a(有什么):

按照书中的例子,‘鱼’ 是一个类,‘泥鳅’ 也是一个类,‘泥鳅’ is-a ‘鱼’,则 ‘鱼’ 是 ‘泥鳅’ 的父类。‘泥鳅’ has-a ‘胡须’,则 ‘胡须’ 是 ‘泥鳅’ 的属性或者方法。

如果给这只 ‘泥鳅’ 取个名字,叫 ‘小李’,那么取名这个行为就叫做 ‘实例化’ ,如果你使用了 ‘小李’ (比如用它做了个菜),这样它是一个对象。


基础练习:

下面的代码不需要手码,甚至不需要运行,只要把注释下面的代码的关系写到注释后面就行了,主要是练习从属关系的:

##  Animal is-a object (yes, sort of confusing) look at the extra credit
class Animal(object):pass##Dog is-a Animal
class Dog(Animal):def __init__(self, name):##??self.name = name##??
class Cat(Animal):def __init__(self, name):##??self.name = name##??
class Person(object):def __init__(self, name):##??self.name = name## Person has-a pet of some kindself.pet = None##??
class Employee(Person):def __init__(self, name, salary):##?? hmm what is this strange magic?super(Employee, self).__init__(name)##??self.name = nameclass Fish(object):pass##??
class Salmon(Fish):pass##??
class Halibut(Fish):pass## rover is-a Dog
rover = Dog("Rover")##??
satan = Cat("Satan")##??
mary = Person("Mary")##??
mary.pet = satan##??
frank = Employee("Frank", 120000)##??
frank.pet = rover##??
flipper = Fish()##??
crouse = Salmon()##??
harry = Halibut()# ================================

有点错误,已经改掉


关于class Name(object)

在Python 3 中,你不需要在类名后面加(object),但是Python是一门优雅的语言,它信奉“显式优于隐式”,所以最好还是写上,至于(object)具体有什么含义,只要记住 class Name(objcet) 是一个“基本的简单类”就行了。


另,代码中有一行:super(Employes, self).__init__(name),是做什么用的?

这个是Python中调用父类的__init__方法的一个方法。详细了解可以百度  super Python 来了解一下。值得注意的是Python 3 中这个方法可以简化为  super().__init__(name)

END!!!

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

  1. 笨方法学Python 习题 42: 对象、类、以及从属关系

    有一个重要的概念你需要弄明白,那就是"类(class)"和"对象(object)"的区别.问题在于,class 和 object 并没有真正的不同.它们其实是同 ...

  2. 笔记35 笨办法学python练习42对象、类、从属关系和部件关系

    笔记35 笨办法学python练习42对象.类.从属关系和部件关系 一.类.对象与从属关系 这个练习是一个有点哲学意味的练习,讨论对象和类的关系,也就是从属关系.对象不就是下属于某个类的子类,或者个体 ...

  3. python从属关系编号_笨办法学Python 习题 42: 对象、类、以及从属关系

    有一个重要的概念你需要弄明白,那就是"类 (class)" 和"对象 (object)" 的区别.问题在于, class 和object 并没有真正的不同.它们 ...

  4. 《 笨方法学 Python 》_ 目录

    < 笨方法学 Python >(第 3 版)书中代码是 Python 2 版本,本着学习 Python 3 的目的,用 Python 3 完成本书的习题,代码也已上传到 Github. 作 ...

  5. 笨方法学Python(二)

    笨方法学Python,习题16 - 21 版本:3.8.0 编辑器:Visual Studio Code 习题16到21讲的是文件的读写和函数的基础,可以通过一个实例来同时练习他们.在下列情景中,我将 ...

  6. 笨方法学python 习题37

    还是在笨方法学python中... 本节的习题是看一下作者列出的python中的各种运算符,尝试来理解这些符号. 在这里,我只列出了一些自己不会的,通过查百度得到得答案,这里来列举一下. (另外有不怎 ...

  7. 笔记 | 笨方法学Python

    整理 | 阿司匹林 出品 | 人工智能头条(公众号ID:AI_Thinker) Python 有多好应该不用多说了,毕竟它是"钦定的"最接近 AI 的语言.(当然,PHP 才是最好 ...

  8. 笨方法学python 15章疑问

    ** 笨方法学python 15章疑问 在15张中教我们读取文件,但是当我测试能否打开我之前写的py格式的文本时出现了这一幕 文件打开后然后又出现了 File "15.py", l ...

  9. 《笨方法学python》_《笨办法学Python》 第46课手记

    <笨办法学Python> 第46课手记 这节课制作了一个Python的项目骨架,花了我一个晚上和一个早上的时间,原因是我下载的pdf里面只有OX S的命令行,而没有win下的.我为此在知道 ...

  10. 笨方法学python习题4

    变量和命名 #笨方法学python_习题4#定义变量 cars = 100 space_in_a_car = 4.0 drivers = 30 passengers = 90#计算 cars_not_ ...

最新文章

  1. JavaScript定义函数的几种方式 1
  2. 判断某棵二叉树是否二叉排序树
  3. php提交飞信,php发送飞信消息
  4. 阿里资深技术专家崮德:8 个影响我职业生涯的重要技能
  5. php解析目录函数怎么用,PHP中目录解析函数
  6. 快速排序的C++实现
  7. 在propreties文件中引用另一个properties文件中的内容
  8. 2020年下半年信息系统项目管理师综合知识真题试题解析
  9. 如何用PowerPoint压缩ppt文件大小
  10. 山东科技大学计算机研究生学院官网,山东科技大学-计算机科学与工程学院
  11. Android UI设计之十三自定义ScrollView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
  12. Altium Designer 总结
  13. C# 中的 delegate, Lambda 表达式 和 event
  14. Taily老段的微信公众号,欢迎交流学习
  15. mac下sourcetree设置代理
  16. python修改sheet名称_openpyxl修改sheet名,sheet颜色,删除sheet的方法
  17. IDEA中的路径问题
  18. java 利用工具包Geotools实现不同坐标系之间坐标转换
  19. P2455 [SDOI2006]线性方程组
  20. 小米4c,5s 红米note4x 刷 Lineage OS

热门文章

  1. 澳门赌王----何鸿燊----勤劳努力是最大的资本!
  2. 运营日记:刚上线的App怎么拉新
  3. oracle客户关系系统,Java swing Oracle实现的客户关系管理系统项目源码附带详细设计文档...
  4. 见识与格局,决定你能走多远
  5. 计算机Excel设置透视图,职称计算机考试Excel知识点:数据透视表和数据透视图...
  6. 广东省大学计算机一级考试试题类型,大学计算机一级考试试题及答案
  7. 3D打印:FDM打印使用CURA4.13.1版本配置
  8. C语言循环输入到输入over,Shell break和continue命令
  9. PPT打印留白空隙太大,解决方法!
  10. mysql 时间查询_两种常用MySql查询时间段的方法