'''类:种类、分类、类别
对象是特征与技能的结合体,类是一系列对象相似的特征与技能的结合体
强调:站的角度不同,总结出的类是截然不同的
在现实世界中:先有的一个个具体存在的对象,然后随着人类文明的发展才有了分类的概念
在程序中:必须先定义类,后调用类来产生对象
现实世界中对对象==》总结出现实世界中的类==》定义程序中的类==》调用类产生程序中的对象
站在老男孩选课系统的角度,先总结现实世界中的老男孩的学生对象(这些对象有相似的特征和技能)
对象1:
特征:
学校='oldboy'
姓名='耗哥'
年龄=18
性别='male'
技能:
选课
对象2:
特征:
学校='oldboy'
姓名='猪哥'
年龄=17
性别='male'
技能:
选课
对象3:
特征:
学校='oldboy'
姓名='帅翔'
年龄=19
性别='female'
技能:
选课
站在老男孩选课系统的角度,先总结现实世界中的老男孩学生类
老男孩学生类:
相似的特征:
学校='oldboy'
相似的技能
选课'''
#在程序中#1、先定义类
class OldboyStudent: #先定义类,定义阶段类体代码立刻执行,产生一个类的名称空间,将一系列相似的特征与技能的名字丢到类的名称空间中
school='oldboy' #将student名字丢到类的名称空间中,指向’oldboy'的内存地址
def choose_course(self): #将choose_course名字丢到类的名称空间中,指向函数的内存地址
print('is choosing course')#类体代码会在类定义阶段就立刻执行,会产生一个类的名称空间
#类的本身其实就是一个容器/名称空间,是用来存放名字的,这是类的用途之一#print(OldboyStudent.__dict__) #类的字典属性,里面存放了一堆名字#print(OldboyStudent.__dict__['school']) #数据属性:字典通过key值,就可以取到对应的value值#print(OldboyStudent.__dict__['choose_course']) #函数属性:字典通过key值,就可以取到对应的value值,value值是是函数的内存地址#OldboyStudent.__dict__['choose_course']() #内存地址加括号就可以直接调用
#print(OldboyStudent.school) #OldboyStudent.__dict__['school'] #另外一种访问数据属性的方法,直接使用点就可以访问类的名称空间中的名字#print(OldboyStudent.choose_course) #OldboyStudent.__dict__['choose_course']#另外一种访问函数属性的方法,直接使用点就可以访问类的名称空间中的名字
#OldboyStudent.choose_course(111) #类通过点直接访问的函数属性就是一个普通的函数,要遵循函数的传参的规则
#类的增删改查#增#OldboyStudent.country='China' #OldboyStudent.__dict__['country']='China'#改#OldboyStudent.country='CHINA' #OldboyStudent.__dict__['country']='China'#删#del OldboyStudent.school#查#print(OldboyStudent.__dict__)
#2、后调用类产生对象,调用类的过程,又称为类的实例化,实例化的结果称为类的对象/实例#stu1=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例#stu2=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例#stu3=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
#类的实例化过程都发生了哪些事?#如何在实例化的过程中为对象定制自己独有的特征#程序中对象到底是什么,如何使用?