• python的继承、封装、多态 --面向对象的特征


    学习java的时候有继承、封装、多态 --面向对象特征

    python同样可有

     

    一、继承

    子类继承父类,

     

     

     

    class Person():
        def __init__(self,name,age):
            self.name =name
            self.age=age
        def info(self):
               print(self.name,self.age)
    
    class Thomas(Person):
        def __init__(self,name,age,score):
            super().__init__(name,age)
            self.score=score
    
    stu=Thomas('jack',20,'100')
    stu.info()
    

      输出的结果为:

     

     (2)一个类继承多个父类

    class A():
        def a(self):
            print('方法A')
    class B():
        def b(self):
            print('方法B')
    class C(A,B):
        def __init__(self,name):
            print('方法C')
    d=C('a')
    d.a()
    d.b()
    

      输出结果:

     

     (3)方法重写

    在上面写继承的时候,父类方法info输出的是学生的名字与年龄,但是还想输出他的score信息,怎么办呢

    就需要重写方法(java中也有重写与重载)

     

    class Person():
        def __init__(self,name,age):
            self.name =name
            self.age=age
        def info(self):
               print(self.name,self.age)
    
    class Thomas(Person):
        def __init__(self,name,age,score):
            super().__init__(name,age)
            self.score=score
        def info(self):
            print(self.score)
            super().info()
    stu=Thomas('jack',20,'100')
    stu.info()
    

      

     12行是对父类方法info的重写

    13是增加自己想输出的内容

    14行是输出继承父类的内容

     

     在info方法的左侧有个重写的提示

     ----------------------------

    object类

    object:类是所有类的父关,因此所有类都有oject类的属性和方法内置函数dir()可以查看指定对象所有属性

    Object有一个_str_()方法,用于返回一个对于“对象的描述”对应于内置函数str()经常用于 print()方法,帮我们查看对象的信息,所以我们经常会对_str_()进行重写

    二、封装

     

    三、多态

    简单地说,多态就是“具有多种形态”它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态决定调用哪个对象中的方法。

    class Animal(object):
        def eat(self):
         print('动物会吃')
    
    class  Dog(Animal):
        def eat(self):
         print('狗吃骨头')
    
    class Cat(Animal):
        def eat(self):
         print('猫吃鱼')
    
    class Person():
        def eat(self):
         print('人吃五谷杂粮')
    
    def fun(obj):
        obj.eat()
    
    fun(Cat())
    fun(Dog())
    fun(Person())
    

      输出的结果为:

  • 相关阅读:
    梯度提升树(GBDT)原理小结
    scikit-learn Adaboost类库使用小结
    集成学习之Adaboost算法原理小结
    集成学习原理小结
    支持向量机高斯核调参小结
    scikit-learn 支持向量机算法库使用小结
    支持向量机原理(五)线性支持回归
    支持向量机原理(四)SMO算法原理
    支持向量机原理(三)线性不可分支持向量机与核函数
    支持向量机原理(二) 线性支持向量机的软间隔最大化模型
  • 原文地址:https://www.cnblogs.com/thomasbc/p/15069610.html
Copyright © 2020-2023  润新知