继承

来源:互联网 发布:仿淘宝手机端筛选样式 编辑:程序博客网 时间:2024/05/22 23:53
'''**********继承**********'''#基本类定义class Human:    def say(self,messaeg):        print('i said that {}'.format(messaeg))class Method:    def sleep():        pass'''继承的表示方法'''#定义一个类的时候在后面跟上括号,中间书写的名称即表示当前定义类所继承的类class Person(Human, Method):    pass'''************继承的理解************'''#对象的理解'''    对象可以看做是方法和变量固定组合的模板    创建对象时,就是复制原来组合归类的某个模板(类)指定到一个名称(对象)的空间下    对对象进行操作的时候,就是在指定空间内查找对应的属性或方法进行相关的操作'''#对象的异同'''    根据上述的理解,可以将类分作三种类别    1.方法类        定义:            这种类内部,只存在方法,不涉及任何变量        特征:             通过类名,查找基本模板空间内的方法            也可以通过实例化,拷贝方法到新的对象空间内,然后查找对象空间中的方法            方法的操作物料均从外界获取            是行为集合            2.属性类        定义:            这种类中,仅包含变量的定义,不涉及方法操作        特征:            通过类名或实例化对象,访问或修改空间内变量            有自我的属性,只能被加工(读取,修改),没有行为(方法)            是属性集合        3.对象类        定义:            包含方法和变量        特征:            自身拥有属性(变量),也拥有可以对自身或外部进行反应(行为)的方法            是完整生命        还有一种特殊的分类,单独区别于其他三种类别    0.模块类(见上方Method)        定义:            同方法类,但是方法传参不包含self关键字        特征:            相当于模块,引入类空间可直接调用方法,是完全没有生命的函数类形态归类            没有个体概念,没有生命气息                    继承对三种类的影响    1.方法类:        更多功能的工具    2.属性类:        拥有更多属性的植物人    3.对象类:        更多的属性,更多的行为,更复杂的人    0.模块类:        更大的模块...        ''''''**************self理解************''''''    self就是当前对象    是生命的象征    没有生命的属性就是变量    没有生命的行为就是函数        self是生命(对象)本身    只存在本身当中    可以访问自身属性    可以驱使自身行为    ''''''*********继承方法和属性的调用********''''''继承基本调用'''#生命类继承调用,模块类以外self.messageself.hello()#通过关键字self就可以对相关属性或方法进行调用#模块类继承调用hello()#模块类无生命,不用self关键字,继承模块类相当于导入模块操作'''继承特殊调用'''#类名调用h = Human()Human.say(h,'message')#类是模板,自身没有生命,行为调用需要生命的参与#类名调用,self自身没有生命,不能够自动完成填充#此时的self只相当于一个入参,需要外部对象(生命)传入#父类调用super(Person, self).__init__(params)#调用父类指定方法'''    注意:        左半为指定父类,super传入当前类名和对象        右侧为指定方法,方法直接传入参数,不在需要传入self''''''*********多继承方法搜索********''''''两种类声明方式'''#经典类class A:    pass    #新式类class A(object):    pass#python2中支持两种类的声明#python3中仅支持新式类的书写'''深度搜索和广度搜索''''''    多继承的类,调用父类方法时存在两种搜索方式    1.深度搜索        从继承的第一个类开始,查找类中是否存在调用的方法,不存在就查找第一个类的全部继承类        重复这种操作,直到查询完毕,查询到则返回,查找不到就查询下一个继承类    2.广度搜索        依次搜索继承的类,不查找继承类的更上一层        查询到则返回,查询不到更换为深度搜索,从最后一个类向前搜索                    搜索支持    1.经典类:        当继承父类为基本类时,采取深度搜索    2.新式类:        当继承父类为基本类时,采取广度搜索            注意:        两种类的继承书写方式都是一致的        采取何种搜索方式取决于最基本的元类的书写方式        '''

原创粉丝点击