美文网首页
python-面向对象——继承

python-面向对象——继承

作者: Jalynn葸 | 来源:发表于2018-04-19 15:29 被阅读15次

继承

#encoding:utf-8
class Animal:
    def eat(self):
        print("吃吃吃")
    def drink(self):
        print("喝喝喝")
    def sleep(self):
        print("睡觉")
    def run(self):
        print("跑")

class Dog(Animal):
    def bark(self):
        print("汪汪汪")
class Cat(Animal):
    def catch(self):
        print("捉老鼠")

wangcai = Dog()
wangcai.eat()
wangcai.bark()
mimi = Cat()
mimi.run()
mimi.catch()
运行结果:
吃吃吃
汪汪汪
跑
捉老鼠

可以多层继承,子类可以直接调用父类的父类的函数

class Animal:
    def eat(self):
        print("吃吃吃")
    def drink(self):
        print("喝喝喝")
    def sleep(self):
        print("睡觉")
    def run(self):
        print("跑")

class Dog(Animal):
    def bark(self):
        print("汪汪汪")
class xiaotq(Dog):
    def fly(self):
        print("-------飞-----")
xiaotq = xiaotq()
xiaotq.fly()
xiaotq.eat()
xiaotq.bark()
重写
#encoding:utf-8
class Animal:
    def eat(self):
        print("吃吃吃")
    def drink(self):
        print("喝喝喝")
    def sleep(self):
        print("睡觉")
    def run(self):
        print("跑")

class Dog(Animal):
    def bark(self):
        print("汪汪汪")

class xiaotq(Dog):
    def fly(self):
        print("-------飞-----")
#方法的重写,名字必须与父类一样
    def bark(self):
        print("++=狂叫+++")

xiaotq = xiaotq()
xiaotq.fly()
xiaotq.eat()
xiaotq.bark()
运行结果:
-------飞-----
吃吃吃
++=狂叫+++

调用被重写的方法:

#encoding:utf-8
class Animal:
    def eat(self):
        print("吃吃吃")
    def drink(self):
        print("喝喝喝")
    def sleep(self):
        print("睡觉")
    def run(self):
        print("跑")

class Dog(Animal):
    def bark(self):
        print("汪汪汪")
class xiaotq(Dog):
    def fly(self):
        print("-------飞-----")
    def bark(self):
        print("++++狂叫+++")
#调用被重写的父类的方法:
        Dog.bark(self) #方法一
        super().bark() #方法二
    
xiaotq = xiaotq()
xiaotq.fly()
xiaotq.eat()
xiaotq.bark()
多继承

python支持多继承

class Base(object):
    def test(self):
        print("======Base====")
class A(Base):
    def test1(self):
        print("test1--------")
class B(Base):
    def test2(self):
        print("test2=======")
class C(A,B):
    pass
c = C()
c.test1()
c.test2()
c.test()
运行结果:
test1--------
test2=======
======Base====
class Base(object):
    def test(self):
        print("======Base====")
class A(Base):
    def test(self):
        print("test1--------")
class B(Base):
    def test(self):
        print("test2=======")
class C(A,B):
    def test(self):
        print("cccccccccc=======")
c = C()
c.test()
print(C.__mro__)  #调用方法时的搜索顺序,如果在某个类中找到了方法,就停止搜索
运行结果:
cccccccccc=======
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.Base'>, <class 'object'>)

所以,设计类时,要尽量避免出现相同的类名

相关文章

  • Python-面向对象--继承

    一.单继承 单继承:比如下图有一个“parent”父类和“son1”,“son2”子类 注:下图第一行中括号内的“...

  • python-面向对象——继承

    继承 可以多层继承,子类可以直接调用父类的父类的函数 重写 调用被重写的方法: 多继承 python支持多继承 所...

  • JavaScript之面向对象编程

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

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

  • Python面向对象继承

    面向对象继承 面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象...

  • java基础-day10-面向对象4.0

    面向对象4.0 1. 面向对象之继承 1.1 生活中的继承 1.2 Java中的继承 1.3 子类对象创建,会调...

  • 面对对象高级编程

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

  • Web前端经典面试试题及答案2

    javascript面向对象中继承实现? 面向对象的基本特征有:封闭、继承、多态。在JavaScript中实现继承...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • Python-面向对象

    类,对象,列表 用Python写一个用类创建房子和床,把床存到房子里,报出一共放置了多少张床。1.在下面代码中“b...

网友评论

      本文标题:python-面向对象——继承

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