类:一类事物相同的特征和动作整合在一起 类是一个抽象的概念
对象:基于类创造的一个具体的事物,拥有具体自己特色的属性或者特征 对象是具体的
1 #-------学校类-------- 2 def sch(name,type,addr): 3 def exam(school):#类相关特征 4 print('%s正在%s考试'%(school['name'],school['addr'])) 5 def recruit_s(school):#类相关特征 6 print('%s %s 正在%s招生'%(school['type'],school['name'],school['addr'])) 7 def init(name,type,addr):#初始化函数 8 school = { 9 'name':name, 10 'type':type, 11 'addr':addr, 12 'exam':exam, 13 'recruit_s': recruit_s, 14 } 15 return school 16 res = init(name,type,addr)#运行函数init,初始化学校属性以及动作的添加 17 return res 18 sch1 = sch('yd','council','xian') 19 print(sch1) 20 sch1['exam'](sch1) 21 sch1['recruit_s'](sch1)
学校类:
特征:名称 类型 地址
动作:考试,招生
改进版:
1 #-------学校类--------
2 class School:
3 def exam(self):
4 print('%s正在%s考试'%(self.name,self.addr))#self是指实例化的对象本身,执行函数时self把实例化的这个对象传到第一个参数的位置上,即sch1=self
5 def recruit_s(self):
6 print('%s %s 正在%s招生'%(self.type,self.name,self.addr))
7 def __init__(self,name,type,addr):#★★★系统内置函数,系统自动执行,初始化函数,默认self参数必须写
8 self.name=name
9 self.type=type
10 self.addr=addr
11 sch1 = School('yd','council','xian')#实例化一个对象(调用__init__运行)
12 sch2 = School('szy','council','xianyang')#实例化另一个对象
13
14 School.exam(sch1)
15 School.recruit_s(sch1)
16 School.exam(sch2)
17 School.recruit_s(sch2)
升级版:
#--------------中国人类-------------- class Chinese: skin = '黄皮肤' def kan_re_nao(self):#self是指实例化的对象本身,执行函数时self把实例化的这个对象传到第一个参数的位置上,如果没有self 下面对象调用方法会报错
print('中国人哎看热闹') def you_xiu(self): print('%s很优秀'%self) ch1=Chinese() # ch2=Chinese() Chinese.kan_re_nao() Chinese.you_xiu('g_l') # print(dir(Chinese))
★★★
# print(Chinese.__dict__)#查看类的属性字典 # print(Chinese.skin)#本质为去下面__dict__找 print(Chinese.__dict__['skin']) Chinese.__dict__['you_xiu']('g_l') Chinese.__dict__['kan_re_nao']()
★print(Chinese.__name__)#显示类名
★print(Chinese.__doc__)#显示文档'中国人都是黄皮肤'
print(Chinese.__base__)#显示父类,即Object类 所有类的父类
print(Chinese.__bases__)#以元组的形式显示父类即Object类
print(Chinese.__dict__)#查看类的属性字典
★print(Chinese.__module__)#显示类所在的模块
print(Chinese.__class__)