码迷,mamicode.com
首页 > 编程语言 > 详细

python 面向对象基础梳理三 继承、派生与组合

时间:2019-01-01 18:54:49      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:面向对象   没有   child   功能   oop   color   gre   继承   就会   

什么是继承

继承是一种创建新类的方式,是一种什么是什么的关系,继承的功能之一就是解决代码重用的问题,继承是一种创建新类的方式,在python 中,新建的一个类可以继承一个或者多个父类,父类由可以成为基类或者超类,新建的类称为派生类或子类。

继承的分类

继承可以分为 单继承和多继承,Python 2 和 python 3 中有经典类和新式类的区分,这里描述的是python3 

示例演示 

# 输入

class Pare1class:
    pass


class Pare2class:
    pass


class Childclass(Pare1class):
    pass


class Childclass2(Pare1class, Pare2class):


print(Childclass.__bases__)

print(Childclass2.__bases__)

# 输出

(<class __main__.Pare1class>,)
(<class __main__.Pare1class>, <class __main__.Pare2class>)

如果没有指定基类,python 会默认继承 object 类,object 是所有Python 类的基类

# 输入 

print(Pare1class.__bases__)
print(Pare2class.__bases__)

# 输出

(<class object>,)
(<class object>,)

继承与重用

在python 中编写类的过程中,我们编写了一个 类 A , 想要在编写一个类B ,但类B 的大部分功能与 A类似,就用到了继承了,通过继承,B 类就会继承 A类,实现A 类的功能

继承示列演示,定义一个动物类 Animal,然后在定义两个类Dog  和 Cat  Dog 和Cat 继承Animal 的所有特征

class Animal:
    def __init__(self, name, aggressive, life_value):
        self.name = name
        self.aggressive = aggressive
        self.life_value = life_value

    def eat(self):
        print("%s is eating" % self.name)

    def sleep(self):
        print("%s is sleeping" % self.name)

    def attack(self, enemy):
        enemy.life_value -= self.aggressive


class Dog(Animal):
    pass


class Cat(Animal):
    pass


d1 = Dog(snooppy, 40, 100)
c1 = Cat(kitty, 30, 100)


print(d1.life_value) # 100
c1.attack(d1)  # c1 调用 attack
print(d1.life_value) # 70 

# 输出
70

 派生

当然子类也可以添加新的属性或者在重新定义属性,一旦子类重新定义了自己的属性且与父类重名,那么就以子类的为准了

 

python 面向对象基础梳理三 继承、派生与组合

标签:面向对象   没有   child   功能   oop   color   gre   继承   就会   

原文地址:https://www.cnblogs.com/brave1/p/10205441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!