• 类内的函数共享给对象使用


    1、为对象指定自己独有的属性
    class OldboyStudent:
      school="oldboy"
      count=0
      def __init__(self,x,y,z):#必须函数名为__init__,在调用类时自动触发
        self.name = x
        self.age = y
        self.sex = z
        OldboyStudent.count+=1

      def choose_course(self):

        print("%s is choosing course" %self.name)

    #调用类时发生两件事
    #发生两件事,第一件事创造出一个空对象stu1#对象本质就是名称空间,在点后面的名称都称为属性
    #自动触发类中的__init__功能的执行,将stu1以及调用类括号内的参数一同传入
    stu1 = OldboyStudent("yf",18,"male")#因为默认传入stu1所以只要传入剩下参数即可
    OldboyStudent.xx=2 #增加属性,往类名称空间内添加
    print(stu1.xx)       #从对象空间开始找,没有就去类空间找,如果类也没有则报错
    print(stu1.__dict__)   #显示出stu1内函数__init__自动触发后的所有属性
    print(stu1.name)      #选择stu1内的某个属性
    print(stu1) #显示出stui内存地址
    stu2 = OldboyStudent("fxc",18,"female")
    stu1.choose_course() #用sut1对象运行类中的函数,形成绑定的关系

    # print(stu1.count) #不断调用类产生对象,可以通过计数得到个数,需要注意的是默认计数的开始要放在类的名称空间内
    # print(stu2.count) #计数的开始而是在对象的__init__内,需要通过类名称.count来达到与默认值的连接来计数

    # 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
    # 对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性

    2、继承与派生
    '''
    1、什么是继承
    继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类
    继承的特性是:子类会遗传父类的属性
    强调:继承是类与类之间的关系

    2、为什么用继承
    继承的好处就是可以减少代码的冗余

    3、如何用继承
    在python中支持一个类同时继承多个父类
    在python3中
    如果一个类没有继承任何类,那默认继承object类
    在python2中:
    如果一个类没有继承任何类,不会继承object类

    新式类
    但凡继承了object的类以及该类的子类,都是新式类
    经典类
    没有继承object的类以及该类的子类,都是经典类

    在python3中都是新式类,只有在python2中才区别新式类与经典类

    新式类vs经典类?

    '''
    class king:
        school = "oldbay"
        def __init__(self,name,age):
            self.name=name
            self.age=age


    class OldbayStudent(king):#在括号内继承父类的内容为继承

        def __init__(self,name,age,course):#在自己内的特征,新诞生的属性为派生
            king.__init__(self,name,age)#king访问函数属性,为访问普通函数
            self.course=course

        def select(self,course):
            print("%s 选择课程 %s" %(self.name,self.course))


    class OldbayTeather(king):

        def __init__(self,name,age,grade):
            king.__init__(self,name,age)
            self.grade=grade

        def system(self,stu_name,num):#提供学生名与打分
            print("%s 打分" %self.name)
            stu_name.score=num#学生名.名称=打分分数,直接加到学生的对象名称空间中,__init__内


    user1=OldbayStudent("yf",18,"python")
    user2=OldbayStudent("fxc",21,"python")
    user3=OldbayStudent("zz",21,"linex")
    user4=OldbayTeather("egon",18,10)
    user4.system(user1,99)#运行教师的函数,传入对应的学生名与分数,
    # 分数会对应学生名进入学生的名称空间对象中
    print()

  • 相关阅读:
    failed to create pid file /var/run/rsyncd.pid: File exists报错
    Ansible系列之roles使用说明
    设置build.gradle打包时自动加时间
    Oracle客户端连接数据库配置
    Gradle实现自动打包,签名,自定义apk文件名
    linux定时任务执行没结果,手动执行有结果问题总结
    实现TableLayout布局下循环取出TableRow控件中的文字内容到list集合
    ImageView的src和background的区别
    关于Merge的整理--Merge的使用方法和注意事项的Demo
    关于Merge的整理--AndroidScreenSlidePager开源库中用到的
  • 原文地址:https://www.cnblogs.com/yf18767106368/p/9229695.html
Copyright © 2020-2023  润新知