python Class:面向对象高级编程 多重继承

继承:通过子类继承父类信息而达到子类可以扩展功能的目的

多重继承:通过子类继承多个类

一、多重继承一类

套用廖雪峰的例子:

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868200511568dd94e77b21d4b8597ede8bf65c36bcd000

  • Dog - 狗狗;
  • Bat - 蝙蝠;
  • Parrot - 鹦鹉;
  • Ostrich - 鸵鸟。

按哺乳和鸟类分:

按跑和飞分:

总的:

程序:

#!/usr/bin/python
# -*- coding: utf-8 -*-

class Animal(object):
    pass

# 大类:
class Mammal(Animal):
    pass

class Bird(Animal):
    pass

#功能
class Runnable(object):
    def run(self):
        print('Running...')

class Flyable(object):
    def fly(self):
        print('Flying...')

# 各种动物:
class Dog(Mammal, Runnable):
    pass

class Bat(Mammal, Flyable):
    pass

class Parrot(Bird, Flyable):
    pass

class Ostrich(Bird, Runnable):
    pass

dog = Dog()
dog.run()

运行结果:Running...

二、多重继承二类:Mixin

除了大类,其他继承的类,只要在类名后面+Mixin就可以了。

程序:

#!/usr/bin/python
# -*- coding: utf-8 -*-

class Animal(object):
    pass

# 大类:
class Mammal(Animal):
    pass

class Bird(Animal):
    pass

#功能
class RunnableMixin(object):
    def run(self):
        print('Running...')

class FlyableMixin(object):
    def fly(self):
        print('Flying...')

# 各种动物:
class Dog(Mammal, RunnableMixin):
    pass
class Bat(Mammal, FlyableMixin):
    pass
class Parrot(Bird, FlyableMixin):
    pass
class Ostrich(Bird, RunnableMixin):

dog = Dog()
dog.run()

运行结果:Running...

最后发现,一类和二类没啥区别。。。。。。逗我呢。。。。。。。Mask一下,日后再回头看。

原文地址:http://blog.51cto.com/13502993/2147344

时间: 2024-10-01 20:47:43

python Class:面向对象高级编程 多重继承的相关文章

python基础-面向对象高级编程

实例化对象绑定属性 s.name = 'Michael' # 动态给实例绑定一个属性 类绑定方法---所有实例化对象均可调用Student.set_score = set_score 实例化对象绑定方法---只有该对象可调用from types import MethodType#绑定方法需要使用MethodTypes.set_age = MethodType(set_age, s) # 给实例绑定一个方法 Python内置的@property装饰器就是负责把一个方法变成属性调用的把一个gett

Python 面向对象高级编程——多重继承

1.1   多重继承 >>> #最大类 ... class Animal(object): ...    pass ... >>> #大类 ... class Mammal(Animal): ...    pass ... >>> class Bird(Animal): ...    pass ... >>> class Runnable(object): ...    def run(self): ...        print(

Python实用笔记 (25)面向对象高级编程——多重继承

class Dog(Mammal, Runnable): pass 多重继承,继承了不同大类的所有功能,这种设计称之为Mixln,其目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系. 如: class MyTCPServer(TCPServer, ForkingMixIn): pass 原文地址:https://www.cnblogs.com/niulang/p/9012960.html

python 之面向对象高级编程

数据封装.继承和多态只是面向对象程序设计中最基础的3个概念.在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能. 我们会讨论多重继承.定制类.元类等概念. 使用__slots__ 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() >>&

Python学习---面向对象高级编程

Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性: class Student(object): __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的.除非在子类中也定义__slots__,这样,子类实例允许定义的属性就是自身的__slots__加上父类的__slots__. Python

python之面向对象高级编程

@property: 既能检查参数,又可以用类似属性这样简单的方式来访问类的变量,可以让调用者写出简短的代码 class Student(object): #birth是可读写属性(多定义了一个setter的装饰器),而age就是一个只读属性 @property def birth(self): return self._birth @birth.setter def birth(self, value): self._birth = value @property def age(self):

python Class: 面向对象高级编程 __iter__ 和 next()

官网解释: New in version 2.2. iterator.__iter__() Return the iterator object itself. This is required to allow both containers and iterators to be used with the for and instatements. This method corresponds to the tp_iter slot of the type structure for P

【Python】[面向对象高级编程] 使用__slots__,使用@property

1.使用 __slots__    给实例绑定方法, >>> def set_age(self, age): # 定义一个函数作为实例方法 ... self.age = age ... >>>from types import MethodType >>>s.set_age=MethodType(set_age,s) >>>s.set_age(25) >>>s.age 25 为了给所有的实例都绑定方法,可以给类绑定方

Python3 面向对象 高级编程

正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() >>> s.name = 'Michael' # 动态给实例绑定一个属性 还可以尝试给实例绑定一个方法: >>> def set_age(self, age): # 定义一个函数作为实例方法 ...