• 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()
    游来游去
    >>> 
    #由输出我们可以看出鲨鱼继承了鱼类的属性,但是这个可能不是我们想要的,当然这个例子也许不太恰当,但是最终目的是想说尽量少用多继承
  • 相关阅读:
    关于DataGridView的数据源绑定字符串两个值得注意的问题
    .Net 第三方控件(转)
    sql语句linq语言lambda表达式对照
    InvokeRequired 属性 与Invoke方法
    .net垃圾回收机制
    const与readonly的区别
    Developer Express控件组合中的GridControl控件,如何自动显示每一行的序号
    XtraGrid控件6——2种GridColumn的属性
    如何让应用程序仅运行一个实例(c#)
    DevExpress控件之GridControl控件
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8711556.html
Copyright © 2020-2023  润新知