zoukankan      html  css  js  c++  java
  • python,继承

      面向对象的特征之一继承。通俗点讲就是儿子会继承父亲的财产。在开发中讲解就是子类会继承父类(也有叫超类、基类)的所有方法。

      在Python中子类继承父类只需要用()将父类放进去即可,如class Dog(Dnimal[,Dnimal1...]),可以多继承

    class Fish:
        def __init__(self):
            print("首先你得是一只鱼")
        def swim(self):
            print("游来游去")
        def eat(self):
            print("吃吃吃")
    
    class GoldFish(Fish):
        pass #啥也没有
    
    class Salmon(Fish):
        pass
    
    class Shark(Fish):
        def __init__(self):
            self.hungry = True
    
        def eat(self):
            if self.hungry:
                print("狠狠吃一口")
                self.hungry=False
            else:
                print("你想撑死我。。。")
    
    
    #-------------运行结果
    >>> f = Fish()
    首先你得是一只鱼
    >>> f.eat()
    吃吃吃
    >>> 
    >>> f2 = GoldFish()
    首先你得是一只鱼
    >>> f2.eat()
    吃吃吃
    >>> 
    >>> f3 = Shark()
    >>> f3.eat()
    狠狠吃一口
    >>> f3.eat()
    你想撑死我。。。
    >>> f3.swim()
    游来游去
    >>> 

      虽然python可以使用多继承,但是尽量要少用多继承,因为可能会造成不可预知的错误

    #假设我们有一个动物类
    class Animal:
        def swim(self):
            print("动物属性")
    # 鱼类
    class Fish:
        def __init__(self):
            print("首先你得是一只鱼")
        def swim(self):
            print("游来游去")
        def eat(self):
            print("吃吃吃")
    # 鲨鱼继承鱼类和动物类~~~~这里是为了演示,其实动物类可以作为鱼类的基类
    class Shark(Fish,Animal):
        def __init__(self):
            self.hungry = True
    
        def eat(self):
            if self.hungry:
                print("狠狠吃一口")
                self.hungry=False
            else:
                print("你想撑死我。。。")
    
    #我们看到了动物类和鱼类都有eat()方法,那么我们到底要继承哪一个,
    >>> f = Shark()
    >>> f.swim()
    游来游去
    >>> 
    #由输出我们可以看出鲨鱼继承了鱼类的属性,但是这个可能不是我们想要的,当然这个例子也许不太恰当,但是最终目的是想说尽量少用多继承
  • 相关阅读:
    POJ 2923 Relocation (状态压缩,01背包)
    HDU 2126 Buy the souvenirs (01背包,输出方案数)
    hdu 2639 Bone Collector II (01背包,求第k优解)
    UVA 562 Dividing coins (01背包)
    POJ 3437 Tree Grafting
    Light OJ 1095 Arrange the Numbers(容斥)
    BZOJ 1560 火星藏宝图(DP)
    POJ 3675 Telescope
    POJ 2986 A Triangle and a Circle
    BZOJ 1040 骑士
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8711556.html
Copyright © 2011-2022 走看看