博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《笨办法学Python》 第45课手记
阅读量:4121 次
发布时间:2019-05-25

本文共 2412 字,大约阅读时间需要 8 分钟。

《笨办法学Python》 第45课手记

本节课将对象和类以及他们之间的从属关系。

本学期刚开始学数据结构,贴一些相关的概念:

从整个计算机科学的角度来说,对象是对客观事物的抽象,类是对对象的抽象。类和对象都是一种抽象的数据类型。

对象:是指在应用问题中出现的各种实体、事件和规格说明等,它是由一组属性和在这组值上的一组服务(这里的服务指的是操作,就是我们写在类里的函数所提供的功能,本文作者注)构成的,其中属性值确定了对象的状态。

:把具有相同属性和服务的对象归到同一类,而把一个类中的的每一个对象称为该类的一个实例,他们具有相同的服务。

继承:面向对象方法最有特色的方面。

继承性(Inheritance)是指,在某种情况下,一个类会有“子类”。子类比原本的类(称为父类)要更加具体化。(该段不是书中内容,为作者添加)

原代码如下:

## Animal is-a object(yes, sort of confusing)look at the extra creditclass Animal(Object):    pass## Dog is-a classclass Dog(Animal):    def __init__(self,name)        ##Dog has-a object        self.name = name## Cat is-a classclass Cat(Animal):    def __init__(self,name):        ## Cat has-a object        self.name = name## Person is-a classclass Person(object):    def __init__(self,name)        ## Person has-a object        self.name = name        ## Person has-a pet of some kind        self.pet = None## Employee is-a classclass Employee(Person):    def __init__(self, name, salary)        ## Employee inherit Person hmm what is this strange magic?        super(Employee, self).__init__(name)        ## person has-a salary        self.salary = salary## Fish is-a objectclass Fish(object):    pass## Salmon is-a classclass Salmon(Fish)    pass## Halibut is-a classclass Halibut(Fish)    pass    ## rover is-a Dogrover = Dog("Rover")## satan is-a Catsatan = Cat("Satan")## mary is-a Personmary = Person("Mary")## mary has-a petmary.pet = satan## frank is-a Employeefrank = Employee("Frank", 120000)## frank has-a petfrank.pet = rover## flipper is-a Fishflipper = Fish()## crouse is-a Salmoncrouse = Salmon()## harry is a Halibutharry = Halibut()

通过这段代码,我们得记住,类既可以在对象上定义,也可以在其他类上定义(体现继承性)。

本节课涉及的知识

super(Employee, self).__init__(name)

super函数是在Python2.2后被添加的函数,用来实现类的继承。

super(type[, object-or-type])  Return the superclass of type. If the second argument is omitted the super object  returned is unbound. If the second argument is an object, isinstance(obj, type)   must be true. If the second argument is a type, issubclass(type2, type) must be   true. super() only works for new-style classes.  A typical use for calling a cooperative superclass method is:   class C(B):       def meth(self, arg):           super(C, self).meth(arg)  New in version 2.2.

super(B, self).init()是这样实现继承的:super(B, self)首先找B的父类(就是类A),然后把类B的对象self转换为类A的对象,然后被转换后的类A对象调用自己的init函数。

super 这种用法只有指明子类的机制,虽然是一种解决缺陷的办法但是可能也存在问题。而多继承类定义中有其他的方式,我们以后碰到再讲。

更详细的讲解在这里:

转载地址:http://tfvpi.baihongyu.com/

你可能感兴趣的文章
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
听说玩这些游戏能提升编程能力?
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
Mysql复制表以及复制数据库
查看>>
Linux下SVN客户端使用教程
查看>>
Linux分区方案
查看>>
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>