在python2中的区分:python
经典类:函数
class School: pass
新式类:ui
class School(object): pass
在python3中以上两种均为新式类spa
属性:code
注:类和对象均用点来访问本身的属性对象
数据属性即变量,类的定义与函数又及其类似,其实能够用函数的做用域来理解类的属性调用blog
类的数据属性:作用域
class School: Teacher = "老王" print(School.Teacher)
类的函数属性(通常称为方法):文档
class School: Teacher = "老王" def Examination(self): print("%s的班级正在考试"%self) School.Examination("alex")
查看类属性:it
查看类属性的两种方式:
#注意:类名加点调用本身的属性实际上就是到属性字典里去找东西
class School: Teacher = "老王" def Examination(self): print("%s的班级正在考试"%self) print(dir(School)) #查看类的属性 print(School.__dict__) #查看类的属性字典 print(School.Teacher)#同print(School.__dict__["Teacher"]) 调用数据属性 School.Examination("alex")#同School.__dict__["Examination"]("alex") 调用函数属性
特殊的类属性:
class School: """ 文档 """ Teacher = "老王" def Examination(self): print("%s的班级正在考试"%self) print(School.__name__) #查看类名 print(School.__doc__) #查看文档 print(School.__base__) #查看类的第一个父类 print(School.__bases__) #查看类全部父类构成的元组 print(School.__dict__) #查看类的属性 print(School.__module__) #查看类所在哪一个模块 print(School.__class__) #实例School对应的类(仅新式类中)
对象是由类实例化而来,实例化结果成为一个实例或者称做一个对象
实例化:
class School: """ 文档 """ Teacher = "老王" def Examination(self): print("%s的班级正在考试"%self) School() #类名加上括号就是实例化(能够理解函数运行的返回值就是一个实例)
实例属性:
class School: """ 这是一个学校类 """ dang = "dang" #实例化,init函数不能够有返回值,返回值为空 def __init__(self,name,addr,type): self.mingzi = name #p1.mingzi = name self.dizhi = addr #p1.dizhi = addr self.leixing = type#p1.leixing = type #考试 def Examination(self): print("%s正在考试"%self.mingzi) #招生 def Recruit_students(self): print("%s正在招生"%self.mingzi) person = School("oldboy","沙河","私立") person.Examination() """ 一、实例化的过程本质上就是调用__init__的运行 二、self就是实例自己=person 三、class会自动帮__init__返回值 四、实例只有数据属性,print(person.__dict__) 五、实例调用函数属性,实际上调用的是类的函数属性,person.Examination() 六、print(person.dang)跟函数做用域同样,在本身的做用域找不到会去上一层找 七、类有数据属性和函数属性,实例只有数据属性 八、实例调用函数属性.class会帮你把实例自己传给函数 """