python高阶6 面向对象重新梳理
Posted wyb666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python高阶6 面向对象重新梳理相关的知识,希望对你有一定的参考价值。
关于本篇博文:
面向对象中所有的内容的重新梳理,其实面向对象的知识早在一个多月前就学习过并整理过,但是发现还是有所欠缺,故在此以极其简介的语言风格重新梳理一遍
面向对象详细介绍:http://www.cnblogs.com/wyb666/p/8728621.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‘
(2)__init__方法(构造函数)及对象的定义
1 # __init__方法用来为对象定制对象自己独有的特征 2 class Student: 3 school = ‘luffycity‘ 4 5 # 构造函数 6 def __init__(self, name, sex, age): 7 self.Name = name 8 self.Sex = sex 9 self.Age = age 10 11 def learn(self): 12 print(‘is learning‘) 13 14 def eat(self): 15 print(‘is sleeping‘) 16 17 18 # 定义对象 19 stu1 = Student(‘王二丫‘, ‘女‘, 18) # Student.__init__(stu1,‘王二丫‘,‘女‘,18) 20 21 # __init__方法后实例化的步骤: 22 # 1、先产生一个空对象stu1 23 # 2、Student.__init__(stu1,‘王二丫‘,‘女‘,18) 24 25 # 对象的操作: 26 # 查 27 print(stu1.__dict__) 28 29 # 改 30 stu1.Name = ‘李二丫‘ 31 print(stu1.__dict__) 32 33 34 # 删除 35 del stu1.Name 36 print(stu1.__dict__) 37 38 # 增 39 stu1.class_name = ‘python开发‘ 40 print(stu1.__dict__)
2.属性查找与绑定方法
3.python中一切都是对象
4.面向对象可拓展性总结与练习
三、面向对象进阶
以上是关于python高阶6 面向对象重新梳理的主要内容,如果未能解决你的问题,请参考以下文章