美文网首页Python基础/高级
Python所学----python高级(中)

Python所学----python高级(中)

作者: 大白python学习分享 | 来源:发表于2018-07-27 16:42 被阅读0次

    一. 单继承 、多继承、多态,重写与父类

    1.单继承、就是子类继承父类的属性与方法

    class father():
        def __init__(self,name):
            self.name = name
        def work(self):
            print("工作")
    class son(father):#单继承,把父类的类名写到子类的这个括号里面就实现了单继承
        def son_name(self):
            print("我的名字是%s"%self.name)#继承父类后可以使用父类的属性和方法
    son1 = son("老王")
    son1.son_name()
    son1.work()
    ==============================执行结果============================
    我的名字是老王
    工作
    

    2.多继承、就是子类继承多个父类,拥有他们的方法或者属性

    class father():#第一个父类
        def work(self):
            print("工作")
    class mother():#第二个父类
        def housework(self):
            print("做家务")
    class son(father,mother):#继承上面的两个父类
        pass
    laowang = son()
    laowang.work()#儿子拥有父亲的工作基因
    laowang.housework()#儿子拥有母亲的做家务基因
    #注意点,加入father父类中有和mother父类中有相同的方法时,子类先调用那个?
    #可以通过以下方法查看子类调用父类的顺序
    print(son.__mro__)#这个方法可以查看顺序
    =============================执行结果==========================
    工作
    做家务
    (<class '__main__.son'>, <class '__main__.father'>, <class '__main__.mother'>, <class 'object'>)
    

    3.重写与调用父类

    ======================重写=====================
    class father():
        def work(self):
            print("工作")
    class son(father):
        def work(self):
            print("学习")#我不想工作,我就要学习
    #重写就是父类的方法满足不了子类了,就要用到重写
    laowagn = son()
    laowagn.work()
    ======================执行结果=======================
    学习
    ======================调用父类==================
    class father():
        def __init__(self,name,age):
            self.name = name
            self.age = age
    class son(father):
        def __init__(self,name,age):#重写父类的__init__方法
            #下面就是调用父类的方法,语法
            super().__init__(name,age)#这里的两个参数就是父类里面初始化的两个参数
        def Personal_Information(self):
            print("我的名字是%s\n我的年龄是%s岁"%(self.name,self.age))
    xiaowang = son("老王",18)
    xiaowang.Personal_Information()
    =====================执行结果========================
    我的名字是老王
    我的年龄是18岁
    

    二.静态方法、类方法、多态

    1.静态方法,就是和实例属性、实例方法、类属性、类方法没有关系的方法就叫静态方法声明静态方法用 @staticmethod

    class Dog():
        age = "18"
        @staticmethod  
        def static():#静态方法 类对象和实例对象都可以调用
            return Dog.age
    dahuang = Dog()#注意静态方法不需要多定义参数
    print(Dog.static())#这个是类对象调用
    print(dahuang.static())#这个是实例对象调用
    ======================执行结果=======================
    18
    18
    

    2.类方法,就是类本身的属性与方法,声明类方法用@classmethod

    class Dog():
        @classmethod #这里是类方法的声明 
        def wark(cls):#类对象的第一个参数是  cls
            print("哇哇叫")
    dog1 = Dog()
    dog1.wark()#实例对象调用类方法
    Dog.wark()#类对象调用类方法,类对象调用必须是类的本身
    =====================执行结果======================
    哇哇叫
    哇哇叫
    

    3.多态,所谓多态,是指基类的同一个方法在不同派生类对象中具有不同的表现和行为。龙生九子,子子不同。禅宗说‘一花开五叶’也是这个道理。派生类继承了基类的行为和属性后还会增加特定的行为和属性,同时还可能会对基类的某些行为进行一定改变,这恰恰是多态的表现形式。在python中主要通过重写父类方法来实现多态

    class Anamail():#动物分为 人、狗、猪,他们都会跑
        def run(self):#他们都有同一个特点 跑
            print("跑")
    class people(Anamail):
        def run(self):
            print("人在跑")
    class dog(Anamail):
        def run(self):
            print("狗仔跑")
    class pig(Anamail):
        def run(self):
            print("猪在跑")
    laowang = people()
    laowang.run()
    dahuang = dog()
    dahuang.run()
    pig = pig()
    pig.run()
    #从上面可以看出多态是基于继承和重写的
    =====================执行结果======================
    人在跑
    狗仔跑
    猪在跑
    #这就是一个简单的多态形式
    

    相关文章

      网友评论

        本文标题:Python所学----python高级(中)

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