美文网首页
面向对象高级编程(二)-多重继承&定制类

面向对象高级编程(二)-多重继承&定制类

作者: 皮卡丘的电光一闪 | 来源:发表于2020-06-12 14:17 被阅读0次
多重继承

继承是面向对象编程的一个重要方式,通过继承,子类可以扩展父类的功能。

在python中,可以通过多重继承,一个子类同时获得多个父类的所有功能:

# 动物大类
class Animal(object):
    pass
# 地走类
class Runnable(object):
    pass
# 飞行类
class Flyable(object):
    pass
# Dog和Bat多重继承
class Dog(Animal, Runnable):
    pass
class Bat(Animal, Flyable):
    pass
MixIn

在设计类的继承关系时,主线都是单一继承下来的。但若"混入"额外的功能,通过多重继承实现,这种设计通常称之为MinIn。

为了更好的看出继承关系,将RunnableFlyable改为RunnableMinInFlyableMinIn

class Dog(Animal, RunnableMinIn):
    pass

MinIn的目的就是给一个类增加多个功能,优先考虑通过多重继承来组合多个MinIn功能,而不是设计多层次的复杂的继承关系。

定制类
class Student(object):
    def __init(self, name):
        self.__name = name
# 1. __str__,自定义打印实例显示的值
    def __str__(self):
        return 'Studen object (name: %s)' % self.__name
# 2. __iter__ 可将一个类被用于for...in循环,__iter__返回一个迭代对象,__next__方法拿到循环的下一个值,知道遇到StopIteration错误时退出循环。
    def __iter__(self):
        return self    # 实例本身就是迭代对象,返回自己即可
    def __next__(self):
        return self
# 3.__getitem__像list那样按照下表取出元素(切片等函数体见廖雪峰老师的定制类__getitem__)
    def __getitem__(self, n):
        a, b = 1, 1
        for x in range(n):
            a, b = b, a + b
        return a
# 4.__getattr__动态返回一个属性
    def __getattr__(self, attr):
        if attr == 'score'
            return 99
# 5.__call__一个对象实例可以有自己的属性和方法,当我们调用实例方法时,我们用instance.method()来调用。定义一个__call__方法,就可以i直接对实例进行调用
    def __call__(self):
        print('My name is %s.' % self.__name)
# 通过callable()函数,可以判断一个对象是否是'可调用'对象

相关文章

  • 面对对象高级编程

    面向对象高级编程: 面向对象编程:封装、继承和多态 面向对象高级编程:多重继承、定制类和元类

  • 面向对象高级编程(二)-多重继承&定制类

    多重继承 继承是面向对象编程的一个重要方式,通过继承,子类可以扩展父类的功能。 在python中,可以通过多重继承...

  • Python面向对象编程(下)

    数据封装、继承和多态是面向对象程序设计中最基础的3个概念,今天学习下Python中的高级特性——多重继承、定制类、...

  • js红宝书笔记九 第八章 类与面向对象编程

    本文继续对JavaScript高级程序设计第四版 第八章 对象、类与面向对象编程 进行学习 一、继承 继承是面向对...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • Lua 元表和元方法

    table 作为 Lua 中唯一的数据结构,我们可以利用 table 实现面向对象编程中的类、继承、多重继承等等。...

  • 2021-12-05面向对象与面向过程总结

    面向对象 面向对象编程(OOP) 面向对象编程:是一种编程范式,它以类和对象作为组织代码的单元,以封装、抽象、继承...

  • 无标题文章

    Boolan-C++面向对象高级编程(上)第三周笔记 类与类之间的关系 一.继承inheritance:is a ...

  • python设计模式

    第一章 面向对象编程 对象;类;方法; 面向对象编程的主要概念 封装;多态;继承;抽象;组合 面向对象的设计原则 ...

  • 王道程序员求职宝典(十二)面向对象编程

    面向对象编程 继承访问方式- 内部访问- 对象访问(外部访问)访问属性公有继承私有继承保护继承继承导致二义性类间转...

网友评论

      本文标题:面向对象高级编程(二)-多重继承&定制类

      本文链接:https://www.haomeiwen.com/subject/drvgtktx.html