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()
    游来游去
    >>> 
    #由输出我们可以看出鲨鱼继承了鱼类的属性,但是这个可能不是我们想要的,当然这个例子也许不太恰当,但是最终目的是想说尽量少用多继承
  • 相关阅读:
    Linux中配置Aria2 RPC Server
    Ubuntu无法进入Windows的NTFS分区
    Visualbox在UEFI模式下无法正常引导
    pacman安装软件包出现损坏
    Windows下禁用锁屏热键WinKey+L
    Linux中无权限使用sudo
    Windows 10 MBR转GPT
    oh-my-zsh的安装与基本配置
    Raspbian开启root账户
    xrandr: 命令行修改分辨率工具
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8711556.html
Copyright © 2011-2022 走看看