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、谁来调用就会把谁当做第一个参数传入
- 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)