《笨方法学 Python 3》42.对象、类及从属关系
有个重要的概念必须弄明白,那就是‘类’和‘对象’的区别。
原文中花费了大量语段来描述,我就按个人理解简单的归纳一下,可能不对,如有误,请指出:
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.对象、类及从属关系相关推荐
- 笨方法学Python 习题 42: 对象、类、以及从属关系
有一个重要的概念你需要弄明白,那就是"类(class)"和"对象(object)"的区别.问题在于,class 和 object 并没有真正的不同.它们其实是同 ...
- 笔记35 笨办法学python练习42对象、类、从属关系和部件关系
笔记35 笨办法学python练习42对象.类.从属关系和部件关系 一.类.对象与从属关系 这个练习是一个有点哲学意味的练习,讨论对象和类的关系,也就是从属关系.对象不就是下属于某个类的子类,或者个体 ...
- python从属关系编号_笨办法学Python 习题 42: 对象、类、以及从属关系
有一个重要的概念你需要弄明白,那就是"类 (class)" 和"对象 (object)" 的区别.问题在于, class 和object 并没有真正的不同.它们 ...
- 《 笨方法学 Python 》_ 目录
< 笨方法学 Python >(第 3 版)书中代码是 Python 2 版本,本着学习 Python 3 的目的,用 Python 3 完成本书的习题,代码也已上传到 Github. 作 ...
- 笨方法学Python(二)
笨方法学Python,习题16 - 21 版本:3.8.0 编辑器:Visual Studio Code 习题16到21讲的是文件的读写和函数的基础,可以通过一个实例来同时练习他们.在下列情景中,我将 ...
- 笨方法学python 习题37
还是在笨方法学python中... 本节的习题是看一下作者列出的python中的各种运算符,尝试来理解这些符号. 在这里,我只列出了一些自己不会的,通过查百度得到得答案,这里来列举一下. (另外有不怎 ...
- 笔记 | 笨方法学Python
整理 | 阿司匹林 出品 | 人工智能头条(公众号ID:AI_Thinker) Python 有多好应该不用多说了,毕竟它是"钦定的"最接近 AI 的语言.(当然,PHP 才是最好 ...
- 笨方法学python 15章疑问
** 笨方法学python 15章疑问 在15张中教我们读取文件,但是当我测试能否打开我之前写的py格式的文本时出现了这一幕 文件打开后然后又出现了 File "15.py", l ...
- 《笨方法学python》_《笨办法学Python》 第46课手记
<笨办法学Python> 第46课手记 这节课制作了一个Python的项目骨架,花了我一个晚上和一个早上的时间,原因是我下载的pdf里面只有OX S的命令行,而没有win下的.我为此在知道 ...
- 笨方法学python习题4
变量和命名 #笨方法学python_习题4#定义变量 cars = 100 space_in_a_car = 4.0 drivers = 30 passengers = 90#计算 cars_not_ ...
最新文章
- JavaScript定义函数的几种方式 1
- 判断某棵二叉树是否二叉排序树
- php提交飞信,php发送飞信消息
- 阿里资深技术专家崮德:8 个影响我职业生涯的重要技能
- php解析目录函数怎么用,PHP中目录解析函数
- 快速排序的C++实现
- 在propreties文件中引用另一个properties文件中的内容
- 2020年下半年信息系统项目管理师综合知识真题试题解析
- 如何用PowerPoint压缩ppt文件大小
- 山东科技大学计算机研究生学院官网,山东科技大学-计算机科学与工程学院
- Android UI设计之十三自定义ScrollView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
- Altium Designer 总结
- C# 中的 delegate, Lambda 表达式 和 event
- Taily老段的微信公众号,欢迎交流学习
- mac下sourcetree设置代理
- python修改sheet名称_openpyxl修改sheet名,sheet颜色,删除sheet的方法
- IDEA中的路径问题
- java 利用工具包Geotools实现不同坐标系之间坐标转换
- P2455 [SDOI2006]线性方程组
- 小米4c,5s 红米note4x 刷 Lineage OS
热门文章
- 澳门赌王----何鸿燊----勤劳努力是最大的资本!
- 运营日记:刚上线的App怎么拉新
- oracle客户关系系统,Java swing Oracle实现的客户关系管理系统项目源码附带详细设计文档...
- 见识与格局,决定你能走多远
- 计算机Excel设置透视图,职称计算机考试Excel知识点:数据透视表和数据透视图...
- 广东省大学计算机一级考试试题类型,大学计算机一级考试试题及答案
- 3D打印:FDM打印使用CURA4.13.1版本配置
- C语言循环输入到输入over,Shell break和continue命令
- PPT打印留白空隙太大,解决方法!
- mysql 时间查询_两种常用MySql查询时间段的方法