面向对象 - 1.面向过程/2.面向对象/3.如何使用类/4.__init__方法/5.属性查找/6.补充知识/7.可扩展性高...
编程范式(流派): 面向对象编程,面向过程编程 各有用处!! 编程:语法+数据结构(list dict)+算法(逻辑)-----------------------------------1.面向过程编程:核心是过程二字,过程指的是解决问题的步骤,设计一条流水线,机械式的思维方式 优点:复杂的问题流程化,进而简单化---系统监控脚本,自动部署脚本之类的,eg:软件包解压安装(不再需要扩展了)就可以使用面向过程的思维编写代码缺点:可扩展性差,牵一发而动全身
1 # 注册 2 import json 3 import re 4 5 def interative(): 6 name = input('>>:').strip() 7 password = input(">>").strip() 8 email = input('>>').strip() 9 return { 10 'name': name, 11 'password': password, 12 'email': email 13 } 14 15 16 def check(user_info): 17 is_valid = True 18 19 if len(user_info['name']) == 0: 20 print('用户名不能为空') 21 is_valid = False 22 23 if len(user_info['password']) < 6: 24 print('密码不能少于6位') 25 is_valid = False 26 27 if not re.search(r'@.*\.com$', user_info['email']): 28 print('邮箱格式不合法') 29 is_valid = False 30 31 return { 32 'is_valid': is_valid, 33 'user_info': user_info 34 } 35 36 37 def register(check_info): 38 if check_info['is_valid']: 39 with open('db.json', 'w', encoding='utf-8') as f: 40 json.dump(check_info['user_info'], f) 41 42 43 def main(): 44 user_info = interative() 45 46 check_info = check(user_info) 47 48 register(check_info) 49 50 51 if __name__ == '__main__': 52 main()
2.面向对象编程:核心就是对象二字,对象就是特征与技能的结合体 --站在上帝的角度想问题,一切事物都是对象!
优点:可扩展性强缺点:编程复杂度高应用场景:用户需求经常变化,互联网应用,游戏,企业内部应用
类就是一系列对象相似的特征与技能的结合体强调:站在不同的角度,得到的分类是不一样的 在现实世界中:一定先有对象,后有类在程序中:一定得先定义类,后调用类来产生对象 站在路飞学院的角度,大家都是学生 在现实世界中: 对象1:王二丫 特征: 学校='luffycity' 名字='王二丫' 性别='女' 年龄=18 技能: 学习 吃饭 睡觉 对象2:李三炮 特征: 学校='luffycity' 名字='李三炮' 性别='男' 年龄=38 技能: 学习 吃饭 睡觉 对象3:张铁蛋 特征: 学校='luffycity' 名字='张铁蛋' 性别='男' 年龄=48 技能: 学习 吃饭 睡觉 总结现实中路飞学院的学生类: 相似的特征 学校='luffycity' 相似的技能 学习 吃饭 睡觉
1 # 先定义类: 2 class LuffyStudent: 3 school = 'luffycity' 4 5 def learn(self): 6 print('is learning') 7 8 def eat(self): 9 print('is eatting') 10 11 # 后产生对象 12 stu1 = LuffyStudent 13 stu2 = LuffyStudent() 14 stu3 = LuffyStudent() 15 16 print(stu1) 17 print(stu2) 18 print(stu3)
3.如何使用类类是定义就运行函数是调用才运行 类的用途:1.操作它的属性 增删改查2.实例化 产生对象
1 class LuffyStudent: 2 school='luffycity' # 数据属性 3 4 def learn(self): # 函数属性 5 print('is learning') 6 7 def eat(self): # 函数属性 8 print('is sleeping') 9 # print('---') # 类是定义,就运行 10 11 #查看类的名称空间 12 # print(LuffyStudent.__dict__) 13 # print(LuffyStudent.__dict__['school']) 14 # print(LuffyStudent.__dict__['learn']) 15 16 #查 17 # print(LuffyStudent.school) 18 # print(LuffyStudent.learn) 19 20 #增 21 LuffyStudent.country = 'china' 22 print(LuffyStudent.__dict__) 23 # print(LuffyStudent.country) 24 25 #删 26 del LuffyStudent.country 27 print(LuffyStudent.__dict__) 28 29 #改 30 LuffyStudent.school = 'LuffyCity' 31 print(LuffyStudent.__dict__)
4.__init__方法__init__方法用来为对象定制对象自己独有的特征__init__实例化对象时会自动调
1 class LuffyStudent: 2 school = 'luffycity' 3 4 def __init__(self,name,sex,age): 5 self.Name=name 6 self.Sex=sex 7 self.Age=age 8 9 def learn(self): 10 print('is learning') 11 12 def eat(self): 13 print('is eatting') 14 15 # 后产生对象 16 stu1 = LuffyStudent('alice','女',18) 17 18 #加上__init__方法后,实例化的步骤 19 #1.先产生一个空对象stu1 20 #2.触发函数 LuffyStudent.__init__(stu1,name,sex,age) 21 22 #查 23 # print(stu1.__dict__) 24 # print(stu1.Name) 25 # print(stu1.Age) 26 27 #改 28 stu1.Name = 'alex' 29 print(stu1.__dict__) 30 print(stu1.Name) 31 32 #删 33 del stu1.Name 34 print(stu1.__dict__) 35 36 #增 37 stu1.class_name = 'python开发' 38 print(stu1.__dict__) 39 40 stu2 = LuffyStudent('lily','男',30) # Luffycity.__init__(stu2,'lily','男',30) 41 print(stu2.__dict__) 42 print(stu2.Name)
5.属性查找
1 # x = 'global' 2 class LuffyStudent: 3 school = 'luffycity' 4 5 def __init__(self,name,sex,age): 6 self.Name=name 7 self.Sex=sex 8 self.Age=age 9 10 def learn(self,x): 11 print('%s,%s is learning' % (self.Name,x)) 12 13 def eat(self): 14 print('%s is eatting' % self.Name) 15 16 # 后产生对象 17 stu1 = LuffyStudent('alice','女',18) 18 stu2 = LuffyStudent('alex','男',38) 19 stu3 = LuffyStudent('lily','男',40) 20 # print(stu1.__dict__) 21 # print(stu2.__dict__) 22 # print(stu3.__dict__) 23 24 # 对象:特征与技能的结合体 25 # 类:类是一系列对象相似的特征与相似的技能的结合体 26 27 # 类中的数据属性:是所有对象共有的 28 # print(LuffyStudent.school) 29 # 30 # print(stu1.school,id(stu1.school)) 31 # print(stu2.school,id(stu2.school)) 32 # print(stu3.school,id(stu3.school)) 33 34 # 类中的函数属性:是绑定给对象使用的,绑定到不同的对象是不同的绑定方法,对象调用绑定方法时,会把对象本身当作第一个传入,传给self 35 # print(LuffyStudent.learn) 36 # LuffyStudent.learn(stu1) 37 # LuffyStudent.learn(stu2) 38 # LuffyStudent.learn(stu3) 39 40 # print(stu1.learn) 41 # stu1.learn(1) #learn(stu1,4) 42 # print(stu2.learn) 43 # print(stu3.learn) 44 45 # stu2.learn(2) 46 # stu3.learn(3) 47 48 # 属性查找,对象会在自己内部找 --》类中找--》父类找--》不会去全局找 49 # stu1.x = 'form stu1' 50 # LuffyStudent.x = 'from LuffyCity class ' 51 # print(LuffyStudent.__dict__) 52 # print(stu1.__dict__) 53 # print(stu1.x)
6.补充知识
1.站的角度不同,定义出的类是截然不同的;2.现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等;3.有时为了编程需求,程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中却是一个很常见的类。 4.python 一切皆对象,在python3里统一了类与类型(list dict)的概念
1 # print(type([1,2])) 2 # print(list) 3 class LuffyStudent: 4 school = 'luffycity' 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,x): 12 print('%s,%s is learning' % (self.Name,x)) 13 14 def eat(self): 15 print('%s is eatting' % self.Name) 16 # print(LuffyStudent) 17 18 li1 = [1,2,3] # li = list(1,2,3) # list 对象 19 li1.append(4) # 对象在调自己的绑定方法 # list.append(li1,4) 20 # list.append(li1,4) # 类中的方法 是给 对象用的 21 print(li1)
7.可扩展性高
1 class Chinese: 2 country = 'China' 3 def __init__(self,name,age,sex): 4 self.name=name 5 self.age=age 6 self.sex=sex 7 def eat(self): 8 print('%s is eating' % self.name) 9 10 p1 = Chinese('alice',19,'女') 11 p2 = Chinese('alex',22,'男') 12 13 print(p1.name,p1.country) 14 print(p2.name,p2.country) 15 p1.eat() 16 p2.eat()
转载于:https://www.cnblogs.com/alice-bj/p/8530411.html
面向对象 - 1.面向过程/2.面向对象/3.如何使用类/4.__init__方法/5.属性查找/6.补充知识/7.可扩展性高...相关推荐
- java是面向对象还是面向过程_面向对象和面向过程最本质的区别是什么?
面向对象和面向过程最本质的区别在于考虑问题的出发点不同,面向过程是以事件流程为考虑问题的出发点,而面向对象则是以参与事件的角色(对象)为考虑问题的出发点,所以面向对象在处理问题时更加灵活.目前,面向过 ...
- 什么是面向对象、面向过程与面向对象的区别
要讲区别,首先我们得先来弄弄清楚什么是面向过程,什么是面向对象. 面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 比如把大象放进冰箱,第一 ...
- 面向过程与面向对象有什么区别
目录 一.什么是面向过程 1.面向过程的缺点 2.面向过程的优点 补:简单介绍代码与代码之间的耦合度 二.什么是面向对象 三.面向过程与面向对象有什么区别 一.什么是面向过程 面向过程主要的特 ...
- java是面向对象还是面向过程_Java教程分享Java面向对象与面向过程
Java教程分享Java面向对象与面向过程,面向对象: 是一种看待问题, 解决问题的思维方式, 着眼点在于找到一个能够帮助解决问题的实体, 然后委托这个实体来解决问题 面向过程: 是一种看待问题, 解 ...
- php是面向对象还是过程,PHP面向过程和面向对象
php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...
- java面向过程和面向对象
面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...
- 面向过程和面向对象的区别(转)
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙 ...
- 面向对象与面向过程区别
面向对象:用线性的思维.与面向过程相辅相成.在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统.微观上,仍然使用面向过程. "面向过程"是一种是事件为中心的编程思 ...
- 面向对象编程(一)——面向对象和面向过程
面向对象(Object Oriented),通过对象来封装我们的数据.(组织代码,封装数据) 面向对象和面向过程: 面向过程:procedure oriented programming,POP 面向 ...
最新文章
- MySQL · 捉虫动态 · event_scheduler 慢日志记错
- 网站防火墙探测工具Wafw00f
- java 获取当前ip_不停机还能替换代码?6年的 Java程序员表示不可思议
- python中的帮助_在Python中使用help帮助
- 电子工程师需要了解的SMT贴片质量问题汇总(转)
- HttpClient测试类请求端和服务端即可能出现乱码的解决
- 数组序列化 java_Java基础之数组序列化、反序列化 小发现(不知道 是不是有问题)...
- 推荐10个技术圈优质的公众号大号
- TCP模块的断开操作
- celery java_Celery(分布式任务队列) 的使用方法总结
- ThinkPHP的pathinfo模式、路径访问模式及URL重写
- StringJoiner
- 第五人格显示服务器维护中请稍后登录怎么办,《第五人格》未知异常 请稍后重试登不上去如何解决...
- 一张图带你了解游戏程序员的学习之路
- 解决网络栏只剩下飞行模式
- tkinter 的界面美化库:ttkbootstrap 使用教程
- 计算机语言排名labview,编程语言排名
- Vue、JS——定时器倒计时封装
- 使用NPOI按照word模板文件生成新的word文件
- memcpy 内存越界分析
热门文章
- mongodb与java结合_MongoDB初探系列之四:MongoDB与Java共舞
- TypeError系列之:TypeError: conv2d(): argument 'input' (position 1) must be Tensor, not NoneType
- Windows系统MySQL8.0的安装教程
- go语言1.4版本将支持面向android开发,[翻译]Go语言1.4版本将支持面向Android开发
- 8086汇编-实验10-字符打印程序
- [Jarvis OJ - PWN]——Smashes
- socket网络编程——多进程、多线程处理并发
- rds oracle utl file,本地Oracle数据上传到AWS的RDS
- 创维oled工厂模式abd_创维OLED游戏电视创维专业电竞显示器 为SN战队保驾护航
- 15.4.5 简化元组的使用