1 类的定义和使用
部分代码:
1 """ 2 Description: 3 Author:Nod 4 Date: 5 Record: 6 #---------------------------------v1-----------------------------------# 7 """ 8 9 class student: 10 school='oldboyedu' 11 def learn(self): 12 print('is learning') 13 14 def choose_course(self): 15 print('%sis choose course'%self) 16 17 #print('===========runing') #执行类的时候会执行该代码 18 19 print(student.__dict__) #查看名称空间 20 21 22 #查 23 print(student.school) #类的数据属性 也就是特征 24 print(student.learn) #类的函数属性 也就是技能 25 26 27 #修改 28 student.school="Oldboyedu" 29 print(student.school) 30 31 #增加 32 student.address='beijing' 33 print(student.address) 34 35 36 #删除 37 del student.address 38 #print(student.address)#因为删除了 所以会报错 39 40 41 #调用函数 42 43 student.choose_course('xxx') #因为有位置参数 所以必须传值
2 对象的定义和使用
说明:在程序中 一定要先定义类 再产生对象
1 调用类的过程称之为实例化
2 得到1个返回值,即对象
类不是真正存在 而对象是真正存在的
对象应该有相同的功能 也应该有部分不同的功能属性部分
如何定制对象独有的特征?
之前我们定义类是这样的:
为了定制独有的特征:
----------------------------------------------------add in 18-05-06 begin----------------------------------------
为对象定制独有属性,Python有内置方法__init__
def __init__(self,name,age,sex) 此处表示需要4个位置参数
__init__调用类 实例化就触发执行
调用类的功能称之为类的实例化,实例化分为2步骤
stu1=Student('nod','25','F')
1 得到1个返回值,即对象,该对象是1个空对象stu1
2 student.__init__(stu1,'nod','25','F') 进行传递
关于此处__init__的传递一定要好好理解
----------------------------------------------------add in 18-05-06 end----------------------------------------
部分代码如下
1 """ 2 Description: 3 Author:Nod 4 Date: 5 Record: 6 #---------------------------------v1-----------------------------------# 7 """ 8 #之前的定义方式 9 # class student: 10 # school='oldboy' 11 # def learn(self): 12 # print(' is learning') 13 # def choose_course(self): 14 # print(' is choose course') 15 # #调用类的时候称之为实例化 会产生一个返回值 就是对象 16 # 17 # std1=student() 18 # std2=student() 19 # std3=student() 20 21 22 #为了定制独有特征,改进的方式 23 24 class student: 25 school='oldboyedu' 26 def __init__(self,name,age,sex): 27 """ 28 init 会在调用类 也就是实例化的时候就会实行 29 注意此处将Age与age区分大小写是为了区分 30 age表示位置参数,而Age才是类当中的一个特征 31 """ 32 self.Name=name 33 self.Age=age 34 self.Sex=sex 35 """ 36 python会自动把stu1传进去 37 stu1,'nod','25','M' 38 self.Age=age 变成 stu1.Age=25 39 self.Name=name变成stu1.Name=nod 40 self.Sex=sex 变成stu1.Sex=M 41 42 """ 43 def learn(self): 44 print('is learn') 45 46 def choose_course(self): 47 print('is choose course') 48 49 50 # 调用1个类称之为类的实例化 stu1=student('nod','25','M') 51 # 1 得到1个返回值 就是对象 但是是一个空对象 stu1 52 # stu1.__init__(stu1,'nod','25','M') 53 stu1=student('nod','25','FM') 54 print(stu1.__dict__) #stu1也有自己的名称空间 {'Name': 'nod', 'Age': '25', 'Sex': 'M'} 55 56 stu2=student('luna','26','M') 57 print(stu2.__dict__) 58 59 #得到独有属性 60 print(stu1.Name) 61 print(stu2.Age)
上面代码错误部分修改
3 属性查找和绑定方法
对象本身只有数据属性
{'Name': 'luna', 'Age': '26', 'Sex': 'M'}
属性查找是针对类跟对象而言 如果对象 类当中都没有 在外部有的话 对象去查找也是找不到的
1 查找一个对象属性的顺序是 先找对象自己的__dict__ 再找类的
2 类的数据属性是所有对象共享 所有对象都指向同1个内存地址
3对象的技能
bound method 绑定方法
绑定方法在类当中定义函数 函数绑定给对应的对象使用
类中定义的函数是绑定给对象使用
不同的对象是不同的绑定方法
绑定给谁 就应该谁来调用 谁来调用就会把谁当做第一个参数传给对应的函数
比如stu1.choose_course() 会把stu1传给def choose_course(self) 当中的self
部分代码如下所示:
""" Description: Author:Nod Date: Record:18-05-05 #---------------------------------v1-----------------------------------# """ class student: school='oldboyedu' addr='shanghai' def __init__(self,name,age,sex): self.Name=name self.Age=age self.Sex=sex def learn(self): print('%s is learn'%self.Name) def choose_course(self): print(' is choose course') def pay(self,balance): print('%s is paying....'%self.Name) print('