(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)

 

posted @ 2018-12-09 10:02  clyde_S  阅读(261)  评论(0编辑  收藏  举报