编程范式(流派):
面向对象编程,面向过程编程 各有用处!!
编程:语法+数据结构(list dict)+算法(逻辑)
-----------------------------------
1.面向过程编程:核心是过程二字,过程指的是解决问题的步骤,设计一条流水线,机械式的思维方式 优点:复杂的问题流程化,进而简单化---系统监控脚本,自动部署脚本之类的,eg:软件包解压安装(不再需要扩展了)就可以使用面向过程的思维编写代码
缺点:可扩展性差,牵一发而动全身
 # 注册
import json
import re def interative():
name = input('>>:').strip()
password = input(">>").strip()
email = input('>>').strip()
return {
'name': name,
'password': password,
'email': email
} def check(user_info):
is_valid = True if len(user_info['name']) == 0:
print('用户名不能为空')
is_valid = False if len(user_info['password']) < 6:
print('密码不能少于6位')
is_valid = False if not re.search(r'@.*\.com$', user_info['email']):
print('邮箱格式不合法')
is_valid = False return {
'is_valid': is_valid,
'user_info': user_info
} def register(check_info):
if check_info['is_valid']:
with open('db.json', 'w', encoding='utf-8') as f:
json.dump(check_info['user_info'], f) def main():
user_info = interative() check_info = check(user_info) register(check_info) if __name__ == '__main__':
main()
2.面向对象编程:核心就是对象二字,对象就是特征与技能的结合体 --站在上帝的角度想问题,一切事物都是对象!
优点:可扩展性强
缺点:编程复杂度高
应用场景:用户需求经常变化,互联网应用,游戏,企业内部应用

类就是一系列对象相似的特征与技能的结合体
强调:站在不同的角度,得到的分类是不一样的 在现实世界中:一定先有对象,后有类
在程序中:一定得先定义类,后调用类来产生对象 站在路飞学院的角度,大家都是学生 在现实世界中:
对象1:王二丫
特征:
学校='luffycity'
名字='王二丫'
性别='女'
年龄=18
技能:
学习
吃饭
睡觉 对象2:李三炮
特征:
学校='luffycity'
名字='李三炮'
性别='男'
年龄=38
技能:
学习
吃饭
睡觉 对象3:张铁蛋
特征:
学校='luffycity'
名字='张铁蛋'
性别='男'
年龄=48
技能:
学习
吃饭
睡觉 总结现实中路飞学院的学生类:
相似的特征
学校='luffycity' 相似的技能
学习
吃饭
睡觉
 # 先定义类:
class LuffyStudent:
school = 'luffycity' def learn(self):
print('is learning') def eat(self):
print('is eatting') # 后产生对象
stu1 = LuffyStudent
stu2 = LuffyStudent()
stu3 = LuffyStudent() print(stu1)
print(stu2)
print(stu3)
3.如何使用类
类是定义就运行
函数是调用才运行 类的用途:
1.操作它的属性 增删改查
2.实例化 产生对象
 class LuffyStudent:
school='luffycity' # 数据属性 def learn(self): # 函数属性
print('is learning') def eat(self): # 函数属性
print('is sleeping')
# print('---') # 类是定义,就运行 #查看类的名称空间
# print(LuffyStudent.__dict__)
# print(LuffyStudent.__dict__['school'])
# print(LuffyStudent.__dict__['learn']) #查
# print(LuffyStudent.school)
# print(LuffyStudent.learn) #增
LuffyStudent.country = 'china'
print(LuffyStudent.__dict__)
# print(LuffyStudent.country) #删
del LuffyStudent.country
print(LuffyStudent.__dict__) #改
LuffyStudent.school = 'LuffyCity'
print(LuffyStudent.__dict__)
4.__init__方法
__init__方法用来为对象定制对象自己独有的特征
__init__实例化对象时会自动调
 class LuffyStudent:
school = 'luffycity' def __init__(self,name,sex,age):
self.Name=name
self.Sex=sex
self.Age=age def learn(self):
print('is learning') def eat(self):
print('is eatting') # 后产生对象
stu1 = LuffyStudent('alice','女',18) #加上__init__方法后,实例化的步骤
#1.先产生一个空对象stu1
#2.触发函数 LuffyStudent.__init__(stu1,name,sex,age) #查
# print(stu1.__dict__)
# print(stu1.Name)
# print(stu1.Age) #改
stu1.Name = 'alex'
print(stu1.__dict__)
print(stu1.Name) #删
del stu1.Name
print(stu1.__dict__) #增
stu1.class_name = 'python开发'
print(stu1.__dict__) stu2 = LuffyStudent('lily','男',30) # Luffycity.__init__(stu2,'lily','男',30)
print(stu2.__dict__)
print(stu2.Name)
5.属性查找
 # x = 'global'
class LuffyStudent:
school = 'luffycity' def __init__(self,name,sex,age):
self.Name=name
self.Sex=sex
self.Age=age def learn(self,x):
print('%s,%s is learning' % (self.Name,x)) def eat(self):
print('%s is eatting' % self.Name) # 后产生对象
stu1 = LuffyStudent('alice','女',18)
stu2 = LuffyStudent('alex','男',38)
stu3 = LuffyStudent('lily','男',40)
# print(stu1.__dict__)
# print(stu2.__dict__)
# print(stu3.__dict__) # 对象:特征与技能的结合体
# 类:类是一系列对象相似的特征与相似的技能的结合体 # 类中的数据属性:是所有对象共有的
# print(LuffyStudent.school)
#
# print(stu1.school,id(stu1.school))
# print(stu2.school,id(stu2.school))
# print(stu3.school,id(stu3.school)) # 类中的函数属性:是绑定给对象使用的,绑定到不同的对象是不同的绑定方法,对象调用绑定方法时,会把对象本身当作第一个传入,传给self
# print(LuffyStudent.learn)
# LuffyStudent.learn(stu1)
# LuffyStudent.learn(stu2)
# LuffyStudent.learn(stu3) # print(stu1.learn)
# stu1.learn(1) #learn(stu1,4)
# print(stu2.learn)
# print(stu3.learn) # stu2.learn(2)
# stu3.learn(3) # 属性查找,对象会在自己内部找 --》类中找--》父类找--》不会去全局找
# stu1.x = 'form stu1'
# LuffyStudent.x = 'from LuffyCity class '
# print(LuffyStudent.__dict__)
# print(stu1.__dict__)
# print(stu1.x)
6.补充知识
1.站的角度不同,定义出的类是截然不同的;
2.现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等;
3.有时为了编程需求,程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中却是一个很常见的类。 4.python 一切皆对象,在python3里统一了类与类型(list dict)的概念
 # print(type([1,2]))
# print(list)
class LuffyStudent:
school = 'luffycity' def __init__(self,name,sex,age):
self.Name=name
self.Sex=sex
self.Age=age def learn(self,x):
print('%s,%s is learning' % (self.Name,x)) def eat(self):
print('%s is eatting' % self.Name)
# print(LuffyStudent) li1 = [1,2,3] # li = list(1,2,3) # list 对象
li1.append(4) # 对象在调自己的绑定方法 # list.append(li1,4)
# list.append(li1,4) # 类中的方法 是给 对象用的
print(li1)
7.可扩展性高
 class Chinese:
country = 'China'
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def eat(self):
print('%s is eating' % self.name) p1 = Chinese('alice',19,'女')
p2 = Chinese('alex',22,'男') print(p1.name,p1.country)
print(p2.name,p2.country)
p1.eat()
p2.eat()
												

面向对象 - 1.面向过程/2.面向对象/3.如何使用类/4.__init__方法/5.属性查找/6.补充知识/7.可扩展性高的更多相关文章

  1. Net基础篇_学习笔记_第十一天_面向对象(面向过程与面向对象的区别/类的概念)

    1.面向过程-----> 面向对象 面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作. 把大象塞进冰箱里1.打开冰箱门2.把大象塞进去,亲下大象的屁股3.关闭冰箱门 孙全 瘦小 ...

  2. 面向过程 vs 面向对象

    从网上摘录了一些面向过程vs.面向对象的分析,先简单记录如下,稍后会继续整理. 为什么会出现面向对象分析方法? 因为现实世界太复杂多变,面向过程的分析方法无法实现. 面向过程 采用面向过程必须了解整个 ...

  3. 大话JS面向对象之扩展篇 面向对象与面向过程之间的博弈论(OO Vs 过程)------(一个简单的实例引发的沉思)

    一,总体概要 1,笔者浅谈 我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭(面向对象式编程因为引入了类.对象.实例等概念,非常贴合人类对于世间万物的认 ...

  4. 面向对象与面向过程 $this的注意事项和魔术方法set和get

    一.面向对象与面向过程的区别: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象.面向对象更加强调运用人类在日常的思维逻辑 ...

  5. JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等

    一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...

  6. <一>面向对象分析之面向对象和面向过程

    面向对象        ---->注重的是拆分,组装.        ---->封装,继承,多态,复用(只是现象)        ---->面向对象变成的目标从来就不是复用.相反,对 ...

  7. Java基础知识强化20:面向对象和面向过程的思想对比

    面向对象与面向过程的区别  1. 与面向对象编程思想相比较的,往往是面向过程的编程思想,其实在我来理解,两者并不冲突,原因是面向对象的编程也必须使用面向过程的思维来实现具体的功能,所以我认为,两者的区 ...

  8. python的面向对象和面向过程

    一.面向对象和面向过程的区别: a.面向过程: 1)根据业务逻辑从上到下写代码 2)开发思路是将数据和函数按照执行的逻辑顺序组织在一起 3)分开考虑数据与函数 定义性文字: 面向对象编程(Object ...

  9. 面向对象和面向过程,python中的类class,python中程序的入口——main方法,

    1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...

随机推荐

  1. MapReduce编程(七) 倒排索引构建

    一.倒排索引简单介绍 倒排索引(英语:Inverted index),也常被称为反向索引.置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射. ...

  2. Bash中的括号(一)

    初学Bash脚本编程,里面的各种括号,绝对是一个大坑,为了救人救己,以防再度入坑,特记录如下: 一.单小括号: 1.创建子Shell.单个小括号用来创建一个子shell,子shell允许你在不影响当前 ...

  3. atitit. it软件项目管理---自己的员工,雇佣军、援军,混合的员工 杂牌 人员管理架构

    atitit. it软件项目管理---自己的员工,雇佣军.援军,混合的员工 杂牌 人员管理架构 1. 企业的正规军,雇佣军,杂牌划分 1 1.1. 企业的员工基本是雇佣而来 1 1.2. 全职员工与兼 ...

  4. [docker]一些经常或不经常用到的镜像启动方法-一些常用的docker启动方式

    一些经常或不经常用到的镜像启动方法 设置容器的TZ另一种办法 参考: https://github.com/spujadas/elk-docker/blob/master/start.sh ## ov ...

  5. 【c#】装箱与拆箱

    从内存执行的角度来看,值类型的内存分配在线程的堆栈上,而引用类型的内存分配在托管堆上.因此从值类型向引用类型的转换,势必牵涉到数据的拷贝与指针引用等操作. 装箱操作,大致过程为:在托管堆中分配新对象的 ...

  6. c# 遇到的问题,求解?

    c# cannot evaluate expression because the code of the current method is optimized.

  7. android打包library

    最近在做开发时,遇到一个需求,就是要自定义一个控件,最后需要将其打包成android library库,然后供以后其他需求使用,由于以前很少打包library,所以这次特地学了下怎么打包. 首先先随便 ...

  8. 海康网络摄像机调用SDK解码Java版

    两个回调函数: FRealDataCallBack 实现预览回调数据 DecCallBack 解码回调函数 在HCNetSDK.java补充相关函数和结构声明 //播放库函数声明,PlayCtrl.d ...

  9. website 合集

    1. oracle  http://asktom.oracle.com ( 英文 ) http://itpub.net ( 中文 ) https://www.oracle.com/communitie ...

  10. linux命名对文件的读写和退出

    vi xxx.txt 打开就能看到里面的内容.按 i 进入编辑模式,然后就可以输入内容了,也可以移动光标到你要删除内容的位置按删除键来删除内容.编辑完后可以按 Esc(键盘左上角) 进入命令模式.然后 ...