• 4月11日 python学习总结 对象与类


    1.类的定义

      

    #类的定义
    
          class  类名:
                属性='xxx'
                def __init__(self):         
          self.name='enon'
         self.age=18
    
        def other_func: pass

     

    •   在定义类的时候,类内的代码就已经执行了
    • 在定义类时需要在类内定义一个叫__init__的函数,该函数在调用时才会执行
    • self是位置参数,用于在调用函数时接受传入的第一个参数,该参数为调用此方法的object本身
    #类的实例化==》对象
    
    #1. 若类内部没有设置__init__方法,则生成对象时自身的特殊属性加上用如#下方法
    class1=ClassName()
    class1.name='enon'
    class1.age=18
    
    #2.若类内部有__init__方法
    class1=ClassName('enon',18)

      调用类时发生了哪些事:

    1、首先会产生一个空对象stu1
    2、会自动触发类内部的__init__函数
    3、然后将空对象stu1连同调用类时括号内的参数组成(stu1,"egon",18),将这3个参数一起传给__init__函数

     

    2、对象

    1.  类的实例化:调用类产生对象的过程称为类的实例化,实例化的结果是一个对象,或称为一个实例
    2.   对象属性的查找顺序:先找对象自己的名称空间----》类的名称空间
    3.   类的数据属性:是给对象用的,而且直接共享给所有对象用的,内存地址都一样
    4.      类的函数属性:也是给对象用,但是绑定给对象用的,绑定到不同的对象就是不同的 
    5.   绑定方法,内存地址都不一样,但其实只想都是同一个功能
    6.      绑定方法的特殊之处:

                1、 绑定给谁就应该由谁来调用, 

            2、谁来调用就会把谁当做第一个参数传入

     

     

    • 7.     一切皆对象:在python3中统一了类与类型的概念,类即类型

    作业:

    4月11日
        
        1、定义学校类,实例化出:北京校区、上海校区两个对象
            校区独有的特征有:
                校区名=“xxx”
                校区地址={'city':"所在市",'district':'所在的区'}
                多们课程名=['xxx','yyy','zzz']
                多个班级名=['xxx','yyy','zzz']
    
            校区可以:
                1、创建班级
                2、查看本校区开设的所有班级名
                3、创建课程
                4、查看本校区开设的所有课程名
                
    
        2、定义出班级类,实例化出两个班级对象
            班级对象独有的特征:
                班级名=‘xxx’
                所属校区名=‘xxx’
                多门课程名=['xxx','yyy','zzz']
                多个讲师名=['xxx','xxx','xxx']
    
            班级可以:
                1、查看本班所有的课程
                2、查看本班的任课老师姓名
    
    
        3、定义课程类,实例化出python、linux、go三门课程对象
            课程对象独有的特征:
                课程名=‘xxx’
                周期=‘3mons’
                价格=3000
    
            课程对象可以:
                1、查看课程的详细信息
    
    
        4、定义学生类,实例化出张铁蛋、王三炮两名学生对象
            学生对象独有的特征:
                学号=10
                名字=”xxx“
                班级名=['xxx','yyy']
                分数=33
    
            学生可以:
                1、选择班级
                3、注册,将对象序列化到文件
    
    
        5、定义讲师类,实例化出egon,lqz,alex,wxx四名老师对象
            老师对象独有的特征:
                名字=“xxx”
                等级=“xxx”
    
            老师可以:
                1、修改学生的成绩
    import os
    import json
    
    class Campus:
        def __init__(self,name,city,area,courses,classs):
            self.name=name
            self.address={'city':city,'district':area}
            self.courses=courses
            self.classs=classs
        def create_class(self,name,campus,courses,teachers):
            get_class=Classs(name,campus,courses,teachers)
            self.classs.append(get_class.name)
            print(get_class.__dict__)
        def get_classs(self):
            print(self.classs)
        def create_course(self,name,cycle,price):
            get_course = Course(name,cycle,price)
            self.classs.append(get_course.name)
            return get_course
        def get_courses(self):
            print(self.courses)
    
    class Classs:
        def __init__(self,name,campus,courses,teachers):
            self.name=name
            self.campus=campus
            self.courses=courses
            self.teachers=teachers
        def get_courses(self):
            print(self.courses)
        def get_teachers(self):
            print(self.teachers)
    
    class Course:
        def __init__(self,name,cycle,price):
            self.name=name
            self.cycle=cycle
            self.price=price
    
        def get_course_info(self):
            print(self.__dict__)
    
    class Student:
        def __init__(self,id,name,classs,score):
            self.id=id
            self.name=name
            self.classs=classs
            self.score=score
    
        def chose_classs(self,classs):
            self.classs.append(classs)
            print(self.classs)
        def register(self):
            path=os.path.join(os.path.dirname(__file__),'%s.json'%self.name)
            self=self.__dict__
            with open(path,'wt',encoding='utf-8')as f:
                json.dump(self,f)
    
    class Teacher:
        def __init__(self,name,level):
            self.name = name
            self.level=level
        def update_score(self,student,score):
            student.score=score
    
    courses=['XXX','YYY','ZZZ']
    classs=['python','java','linux']
    teachers=['egon','lqz','alex']
    
    # beijing=Campus('北京校区','北京','朝阳区',courses,classs)
    # shanghai=Campus('上海校区','上海','浦东新区',courses,classs)
    # beijing.create_class('python','上海校区',courses,teachers)
    # print(beijing.__dict__)
    # print(shanghai.__dict__)
    
    # pathon=Classs('python','上海校区',courses,teachers)
    # pathon.get_courses()
    
    student=Student(10,'lxx',classs,33)
    # student.register()
    
    teacher=Teacher('egon',2)
    teacher.update_score(student,59)
    print(student.score)

     

  • 相关阅读:
    [leetcode] 48. 旋转图像(Java)(模拟)
    [leetcode] 47. 全排列 II
    [leetcode] 46. 全排列(Java)
    [leetcode] 45. 跳跃游戏 II(Java)(动态规划)
    [leetcode] 875. 爱吃香蕉的珂珂(周赛)
    [leetcode] 874. 行走机器人模拟(周赛)
    《数据结构与算法分析:C语言描述》复习——第八章“并查集”——并查集
    《数据结构与算法分析:C语言描述》复习——第六章“排序”——基数排序
    《数据结构与算法分析:C语言描述》复习——第六章“排序”——桶排序
    《数据结构与算法分析:C语言描述》复习——第六章“排序”——快速排序
  • 原文地址:https://www.cnblogs.com/95lyj/p/8798593.html
Copyright © 2020-2023  润新知