一、面向对象的初识
我们已经学过了python的基础数据类型及函数了,那么我们需要学习一种新的编程思想,就是面向对象的思想。
在python中的一个观点,一切皆是对象,我们python程序员必须站在上帝的角度来看待问题,调用不同的代码。
概念:
类:自然界中有许多共性的一类事物,在程序中也可这样理解。
对象:对象就是类的具体体现的一个,其从属于类,但是又是类的具体体现。
二、面向对象的结构
1 # 在我们处理文件中数据的增删改查的时候,我们用到了函数,其结构类似于下面: 2 def add(path, encoding, mode): 3 """30行代码""" 4 pass 5 6 def remove(path, encoding, mode): 7 """30行代码""" 8 pass 9 10 def update(path, encoding, mode): 11 """30行代码""" 12 pass 13 14 def select(path, encoding, mode): 15 """30行代码""" 16 pass 17 18 # 定义了函数后我们在调用时如下: 19 add('log', 'utf-8', 'r') 20 remove('log', 'utf-8', 'r') 21 update('log', 'utf-8', 'r') 22 select('log', 'utf-8', 'r') 23 24 # 我们每次调用函数的时候都必须给他传参数,很麻烦,我们引入类的概念 25 # class 为python的关键字,用此关键字来定义类名 26 class File: 27 """已经定义了一个类""" 28 def __init__(self, path, encoding, mode): 29 self.path = path 30 self.encoding = encoding 31 self.mode = mode 32 33 def add(self): 34 """30行代码""" 35 pass 36 37 def remove(self): 38 """30行代码""" 39 pass 40 41 def update(self): 42 """30行代码""" 43 pass 44 45 def select(self): 46 """30行代码""" 47 pass 48 # 类这是个概念,要想实际让类实现各种功能需要类中的一个对象来做 49 obj = File("log", "utf-8","r") 50 obj.add() 51 obj.remove() 52 53 54 class Person: # 定义一个类 55 level = "高级动物" # 静态变量,静态字段 56 mind = "有思想" 57 language = "语言" 58 59 def work(self): # 动态方法,函数 60 pass 61 62 def eat(self): 63 pass
三、类名调用变量,方法
1 class Person: 2 """此类是构建人类""" 3 level = "高级动物" # 静态变量,静态字段 4 mind = "有思想" 5 language = "语言" 6 7 def work(self): # 动态方法,函数 8 print("This is work") 9 10 def eat(self): 11 pass 12 # 类名 13 # 1、类名查看类中所有的变量(字段),方法(函数): 14 # 2、类名对静态变量(静态字段)进行操作,最好不要通过__dict__这个字典进行操作 15 # 2.1、通过类名.__dict__ 不建议!!!通过这个方法 16 # print(Person.__dict__["mind"]) # 可以查值 17 # Person.__dict__["create"] = "有创造力" # 不能增加值 18 # del Person.__dict__["mind"] # 不能删除值 19 # Person.__dict__["mind"] = "行尸走肉" # 不能更改值 20 # print(Person.__dict__) 21 # 小总结:查询类里面所有的变量 Person.__dict__ 22 # (增删改)查询单个变量 不要用Person.__dict__ 23 # 2.2、通过类名.变量名 常用!!! 24 # print(Person.mind) # 可查询 25 # print(Person.language) # 可查询 26 # Person.create = "有创造力" # 可增加 27 # del Person.mind # 可删除 28 # Person.mind = "行尸走肉" # 可更改 29 # print(Person.mind) 30 # print(Person.__dict__) 31 # 3、类名对动态方法(函数)进行操作 32 # 3.1、通过类名.__dict__ 不建议!!!通过这个方法 33 # 3.2、类名.方法名 34 # Person.work(11)
四、实例化对象及内部过程
五、对象调用变量,方法
1 class Person: 2 ''' 3 此类是构建人类 4 ''' 5 level = '高级动物' 6 mind = '有思想' 7 language = '语言' 8 9 def __init__(self,name,age,sex,area,hobby): # 构造方法 10 self.name = name # slef.name name 是对象属性 11 self.age = age 12 self.sex = sex 13 self.area = area 14 self.hobby = hobby 15 16 def work(self,eye): 17 self.eye = eye 18 print('开始工作了!!!!') 19 def eat(self): 20 pass 21 22 #实例化对象. 23 # aduan = Person() # 过程就叫做实例化一个对象 24 # 类名+(): 25 # aduan = Person('啊段',18,'男','河北邯郸','非女') 26 # print(aduan) # <__main__.Person object at 0x0000000001F7EA20> 27 #1 产生一个空的对象空间 28 #2,自动执行类中的__init__方法,并将空的对象空间传给self,剩下的值传给相应形参 29 #3,执行init方法,给对象封装属性,并将完善好的这个对象返回给 类名() 30 31 # 对象 32 # 1,查找对象中的所有属性 33 # aduan = Person('啊段',18,'男','河北邯郸','非女') 34 # print(aduan.__dict__) 35 36 # aduan = Person('啊段',18,'男','河北邯郸','非女') 37 # aying = Person('啊颖',17,'女','河北衡水','开车...') 38 #2, 对象操作对象中属性. 39 # aduan = Person('啊段',18,'男','河北邯郸','非女') 40 # print(aduan.name) # 查 41 # aduan.job = 'student' # 增 42 # del aduan.age # 删 43 # aduan.sex = 'laddyboy' 44 # print(aduan.__dict__) 45 #3,对象操作类中的静态变量(静态字段). 只能查询不能增删改. 46 # aduan = Person('啊段',18,'男','河北邯郸','非女') 47 # print(aduan.level) # 查 类中的静态字段 48 # aduan.level = '中等动物' # 对象中设置新属性,而不是改变类中的level 49 # print(aduan.level) 50 # del aduan.level 51 # print(Person.__dict__) 52 #3,对象执行类中的方法. 53 aying = Person('啊颖',17,'女','河北衡水','开车...') 54 print(aying) 55 aying.work('大眼睛') 56 print(aying.__dict__) 57 # 1 self 位置参数, 默认接受的是对象空间,约定俗成叫self. 58 # 2 在类的非__init__方法中,也可以给对象添加一些属性,前提必须先执行这个方法.