关于本篇博文:
面向对象中所有的内容的重新梳理,其实面向对象的知识早在一个多月前就学习过并整理过,但是发现还是有所欠缺,故在此以极其简介的语言风格重新梳理一遍
面向对象详细介绍:http://www.cnblogs.com/wyb666/p/8728621.html
参考文章:http://www.cnblogs.com/linhaifeng/articles/6182264.html
一、面向过程与面向对象
1.面向过程
1 # 面向过程:核心是过程二字,过程指的是解决问题的步骤,设计一条流水线,机械式的思维方式 2 # 优点:复杂的问题流程化,进而简单化 3 # 缺点:可扩展性差 4 # 以下是面向过程的实例(用户注册),用户注册的流程为:用户输入信息->判断用户信息是否合法->合法就保存用户数据 5 import json 6 import re 7 8 9 def interactive(): 10 """ 11 用户输入信息 12 :return: 以字典形式返回注册账号的信息 13 """ 14 name = input('name>>>').strip() 15 pwd = input('password>>>').strip() 16 email = input('email>>> ').strip() 17 return { 18 'name': name, 19 'pwd': pwd, 20 'email': email 21 } 22 23 24 def check(user_info): 25 """ 26 判断用户输入信息是否正确 27 :param user_info: 用户信息 28 :return: 返回字典(用户信息及合法性) 29 """ 30 is_valid = True # is_valid表示合法性 31 # 判断用户名的合法性 32 if len(user_info['name']) == 0: 33 print('用户名不能为空') 34 is_valid = False 35 # 判断密码的合法性 36 if len(user_info['pwd']) < 6: 37 print('密码不能少于6位') 38 is_valid = False 39 # 判断邮箱格式的合法性 40 if not re.search(r'@.*?\.com$', user_info['email']): 41 print('邮箱格式不合法') 42 is_valid = False 43 return { 44 'is_valid': is_valid, 45 'user_info': user_info 46 } 47 48 49 def register(check_info): 50 """ 51 如果合法就注册用户(把用户信息导入json文件中) 52 :param check_info: 包含用户信息及合法性的字典 53 :return: 54 """ 55 if check_info['is_valid']: 56 with open('db.json', 'w', encoding='utf-8') as f: 57 json.dump(check_info['user_info'], f) 58 59 60 # 程序主函数 61 def main(): 62 user_info = interactive() 63 check_info = check(user_info) 64 register(check_info) 65 66 67 # 程序主入口 68 if __name__ == '__main__': 69 main()
2.面向对象
1 # 面向对象:核心就是对象二字,对象就是特征与技能的结合体 2 # 优点:可扩展性强 3 # 缺点:编程复杂度高 4 # 应用场景:用户需求经常变化,互联网应用,游戏,企业内部应用 5 6 # 类就是一系列对象相似的特征与技能的结合体 强调:站在不同的角度,得到的分类是不一样的 7 # 另外在现实世界中一定先有对象,后有类; 在程序中一定得先定义类,后调用类来产生对象 8 9 10 # 先定义类 11 class Student: 12 # 特征: 13 school = 'luffycity' 14 15 # 技能: 16 def learn(self): 17 print('is learning') 18 19 def eat(self): 20 print('is sleeping') 21 22 23 # 后产生对象 24 stu1 = Student() 25 stu2 = Student() 26 stu3 = Student() 27 28 print(stu1) 29 print(stu2) 30 print(stu3)
二、面向对象入门
1.类与对象的基本使用
(1)类的定义
1 # 定义类 2 class Student: 3 # 数据属性 4 school = 'luffycity' 5 6 # 函数属性 7 def learn(self): 8 print('is learning') 9 10 def eat(self): 11 print('is sleeping') 12 13 14 # 查看类的名称空间 15 print(Student.__dict__) 16 print(Student.__dict__['school']) 17 print(Student.__dict__['learn']) 18 print(Student.__dict__['eat']) 19 20 # 查 21 print(Student.school) # Student.__dict__['school'] 22 print(Student.learn) # Student.__dict__['learn'] 23 print(Student.eat) # Student.__dict__['eat'] 24 25 # 增 26 Student.county = 'China' 27 print(Student.__dict__) 28 print(Student.county) 29 30 # 删 31 del Student.county 32 33 # 改 34 Student.school = 'oldboy'
1 #python为类内置的特殊属性 2 类名.__name__# 类的名字(字符串) 3 类名.__doc__# 类的文档字符串 4 类名.__base__# 类的第一个父类(在讲继承时会讲) 5 类名.__bases__# 类所有父类构成的元组(在讲继承时会讲) 6 类名.__dict__# 类的字典属性 7 类名.__module__# 类定义所在的模块 8 类名.__class__# 实例对应的类(仅新式类中)