(3)类的定义和对象的概念
类的定义格式
class Setset: #Python中类名推荐使用驼峰体,函数却不推荐使用驼峰体
类的定义实例
class OldboyStudent:
# 相似的特征:
school = 'oldboy'
# 相似的技能
def choose_course(self):
print('choosing course....')
print('=====run=======>')
PS:类体代码在类定义阶段就会立即运行,会产生类的名称空间,用来将类体代码运行过程中产生的名字都存放起来
print(OldboyStudent.school) #可以通过类直接查看类体下的变量的内存地址
print(OldboyStudent.choose_course) #可以通过类直接查看类体下函数的内存
OldboyStudent.choose_course(1231) #调用方式和函数一样加括号,也可以传入参数
类的用途一
类的本质就是一个名称空间,所以第一种用途就是使用其内部的名字,类名.名字
OldboyStudent.school='OLDBOY' #也可以直接修改类体下面变量的值
del OldboyStudent.school #也可以直接删除类体下的变量
OldboyStudent.xxx=111 #原理就是往类的名称空间内新增了一个key=value的值,本质的操作就是在类下面新增了一个值
print(OldboyStudent.school.__dict__['school']) #可以查看到值,但是不推荐这种麻烦的操作方式,还是遵循Python标准的访问语法即类名 +' . ' + 名字的方式
PS:类下有一个.__dict__方法,就是查看类的名称空间内存的名字,以字典形式存放
print(OldboyStudent.school) #推荐用这种方法去调用
PS:OldboyStudent.school本质就是去OldboyStudent.school的名称空间内找一个对应的字符串形式的key,这就是调用原理
PS:Python中调用类,格式体.后面的全部成为属性即OldboyStudent.school后面的school称之为属性
类的用途二
调用类来产生对象
调用类发生的事:会有一个返回值,该返回值就一个对象
stu1=OldboyStudent() #这里先将类放入一个变量中,即新建一个名称空间
stu2=OldboyStudent()
stu3=OldboyStudent()
PS:每调用一次就会产生一个内存地址,每次调用的内存地址都是不同的
对象的本质也是一个名称空间
stu1.name='王三炮' #往对象的名称空间内增加一个key=value的值
stu1.gender='male'
stu1.age=38
stu2.name='王二炮'
stu2.gender='male'
stu2.age=18
stu3.name='王大炮'
stu3.gender='female'
stu3.age=48
print(stu1.__dict__) #查看名称空间内的名字,可以查看有没有增加成功
print(stu2.__dict__)
print(stu3.__dict__)
print(stu1.name) #这个就是调用查看stu1下的name的值
总结:
类的本质是一个名称空间,对象的本质也是一个名称空间
PS:通俗理解,其实就是调用类的时候赋值给一个变量,这个变量就是对象
属性查找
print(stu1.name) #就是去名称空间查找了一个对应的key,如果本身有name这个属性,则查找成功,如果本身没有则找到类中,如果类中没有则报错
print(stu1.choose_course)