• python中的面向对象学习以及类的继承和继承顺序


    继承

    首先编写一串关于类的代码行:

    __author__ = "Yanfeixu"
    
    
    # class People: 经典类不用加(object)
    class People(object): #新式类
        def __init__(self,name,age):
            self.name = name
            self.age = age
            self.friends = []
            print("--doens't run ")
        def eat(self):
            print("%s is eating..." % self.name)
        def talk(self):
            print("%s is talking..." % self.name)
        def sleep(self):
            print("%s is sleeping..." % self.name)
    
    class Relation(object): # 子类的创建,也要定义构造函数
        def __init__(self,n1,n2):
            print("init in relation")
        def make_friends(self,obj): #w1
            print("%s is making friends with %s" % (self.name,obj.name))
            self.friends.append(obj.name)
    class Man(Relation,People):  # 该子类继承多个父类,并且重构了自己的构造函数
        # def __init__(self,name,age,money):   #---》先覆盖父类
        #     #People.__init__(self,name,age)  # 如果有很多的父类情况下,这种父类的调用就很麻烦
        #     super(Man,self).__init__(name,age) #新式类写法,相比于上面写法比较简洁点----》再继承父类
        #     self.money  = money #---》再添加自己特有的功能
        #     print("%s 一出生就有%s money" %(self.name,self.money))
        def piao(self):
            print("%s is piaoing ..... 20s....done." % self.name)
        def sleep(self):
            People.sleep(self)
            print("man is sleeping ")
    class Woman(People,Relation):  #每个子类之间是互不干扰的
        def get_birth(self):
            print("%s is born a baby...." % self.name)
    
    m1 = Man("NiuHanYang",22)
    # w1 = Woman("ChenRonghua",26)
    #
    # m1.make_friends(w1)
    # w1.name = "陈三炮"
    # print(m1.friends[0])
    
    

    该部分的学习主要注意代码行中注释的部分,因为在继承部分小知识点非常多,所以注意点基本都是写在注释之中。
    还有就是从本人学习类这部分来看,个人的心里感受就是,在类的封装部分的实例与类的继承部分的父类和子类关系基本上原理上是一样的,类的实例化只能从类中得到类的属性,但是想要新的属性的时候就要重新定义性的函数方法,这种原理其实和子类中的重构函数是一样的道理。

    类的继承顺序

    在这里插入图片描述

    python2:经典类是按深度优先来继承,新式类是按广度优先来继承。
    python3:经典类和新式类都是按广度优先来继承,因为效率会比较高。
    注意区分经典类和新式类的区别和联系!在上面的代码行中有提到。

    小福利:
    在这里插入图片描述

    本人目前在学习python、前端、数据库和linux相关的内容,故打算写一些学习笔记,包括安装软件遇到的一些问题、编程语言的学习。 学习如逆水行舟,你在原地踏步的同时,别人一直在前进!
  • 相关阅读:
    [置顶] android ListView包含Checkbox滑动时状态改变
    Xamarin Android Gestures详解
    尝试在条件“$(_DeviceSdkVersion) >= 21”中对计算结果为“”而不是数字的“$(_DeviceSdkVersion)
    Xamarin Android自定义文本框
    C#四种深拷贝方法(转载)
    设置pictureBox的边框颜色(转载)
    C# 在运行中拖拽,改变控件大小位置类(转载)
    Ocelot + Consul的demo(二)集群部署
    Objective-C 简介
    计算机网络—概述
  • 原文地址:https://www.cnblogs.com/souhaite/p/10585604.html
Copyright © 2020-2023  润新知