python心跳的实现_(python)面向对象
函数式编程和面向对象对比
a. round 1 请开发一个消息提醒的功能(邮件/短信/微信)
defemail(em,text):"""发送邮件
:return:"""
print(em,text)defmsg(tel,text):"""发送短信
:return:"""
print(tel,text)defwechat(num,text):"""发送微信
:return:"""
print(num,text)#编写功能:假设用户购买课程,然后给alex发送提醒;
if 1==1:
msg('188888888','张进购买了一个学位课')
email('alex@sb.com','张进购买了一个学位课')
wechat('xxxx','张进购买了一个学位课')
函数
classMessage:defemail(self, em, text):"""发送邮件
:return:"""
print(em,text)defmsg(self, tel, text):"""发送短信
:return:"""
print(tel,text)defwechat(self, num, text):"""发送微信
:return:"""
print(num,text)#编写功能:假设用户购买课程,然后给alex发送提醒;
if 1==1:
obj=Message()
obj.email('alex@sb.com', '张进购买了一个学位课')
obj.msg('188888888','张进购买了一个学位课')
obj.wechat('xxxx','张进购买了一个学位课')
面向对象
初步对比:
函数:定义简单/调用简单
面向对象:定义复杂/调用复杂/ 好处:归类,将某些类似的函数写在一起
总结:
1.函数式编程可能会比面向对象好.
2.python中支持的两种编程方式
3.面向对象方式格式
定义: class 类名 定义了一个类
def 函数名(self) 在类中编写了一个"方法"
pass
调用:
x1 = 类名() 创建了一个对象/实例化了一个对象
x1.函数名() 通过对象调用其中一个方法
classAccount:deflogin(self):
user= input('请输入用户名:')
pwd= input('请输入密码:')if user == 'alex' and pwd == 'sb':print('登录成功')else:print('登录失败')
obj=Account()
obj.login()
实例
a. round 2 打印
"""
完成以下功能:
老狗/20岁/男/上山去砍柴
老狗/20岁/男/开车去东北
老狗/20岁/男/喜欢大宝剑
"""
defkc(name,age,gender):
data= "%s,性别%s,今年%s岁,喜欢上山砍柴" %(name,gender,age)print(data)defdb(name,age,gender):
data= "%s,性别%s,今年%s岁,喜欢开车去东北" %(name,gender,age)print(data)defbj(name,age,gender):
data= "%s,性别%s,今年%s岁,喜欢大宝剑" %(name,gender,age)print(data)
kc('老狗',20,'男')
kc('老狗',20,'男')
db('老狗',20,'男')
bj('老狗',20,'男')
函数版本
classLaoGou:def __init__(self,name,age,gender): #特殊的方法,如果 类名() ,则该方法会被自动执行 (构造方法)
self.n1 =name
self.n2=age
self.n3=genderdefkc(self):
data= "%s,性别%s,今年%s岁,喜欢上山砍柴" %(self.n1,self.n3,self.n2)print(data)defdb(self):
data= "%s,性别%s,今年%s岁,喜欢开车去东北" %(self.n1,self.n3,self.n2)print(data)defbj(self):
data= "%s,性别%s,今年%s岁,喜欢大宝剑" %(self.n1,self.n3,self.n2)print(data)
obj= LaoGou('老狗',20,'男')
obj.kc()
obj.db()
obj.bj()
面向对象
总结:
1.构造方法
实例一:
classFoo:def __init__(self,name): 构造方法,目的进行数据初始化.
self.name=name
self.age= 18obj= Foo('侯明魏')
通过构造方法
通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可.
2.应用
a.将数据封装到对象中,以供自己在方法中调用
classFileHandler:def __init__(self,file_path):
self.file_path=file_path
self.f= open(self.file_path, 'rb')defread_first(self):#self.f.read()
#...
pass
defread_last(self):#self.f.read()
#...
pass
defread_second(self):#self.f...
#...
passobj= FileHandler('C:/xx/xx.log')
obj.read_first()
obj.read_last()
obj.read_second()
obj.f.close()
封装
b.将数据封装到对象中,以供其他函数调用
1 defnew_func(arg):2 arg.k13 arg.k24 arg.k65
6 classFoo:7 def __init__(self,k1,k2,k6):8 self.k1 =k19 self.k2 =k210 self.k6 =k611
12 obj = Foo(111,22,333)13 new_func(obj)
=-=
练习:
1:用户登录
2:显示当前的用户信息
3:查看当前用户所有账单
4:购买姑娘形状的抱枕
1 classUserInfo:2
3 def __init__(self):4 self.name =None5
6 definfo(self):7 print('当前用户名称:%s' %(self.name,))8
9 defaccount(self):10 print('当前用户%s的账单是:....' %(self.name,))11
12 defshopping(self):13 print('%s购买了一个人形抱枕' %(self.name,))14
15 deflogin(self):16 user = input('请输入用户名:')17 pwd = input('请输入密码:')18 if pwd == 'sb':19 self.name =user20 whileTrue:21 print("""
22 1. 查看用户信息23 2. 查看用户账单24 3. 购买抱枕25 """)26 num = int(input('请输入选择的序号:'))27 if num == 1:28 self.info()29 elif num ==2:30 self.account()31 elif num == 3:32 self.shopping()33 else:34 print('序号不存在,请重新输入')35 else:36 print('登录失败')37
38 obj =UserInfo()39 obj.login()
实例
面向对象的代码如何编写
a.规则
1 classFoo:2
3 def __init__(self,name):4 self.name =name5
6
7 defdetail(self,msg):8 print(self.name,msg)9
10 obj =Foo()11 obj.detail()
规范
b.什么时候写,如何写?
方法一:归类+提取公共值
1 classFile:2 deffile_read(self,file_path):3 pass
4
5 deffile_update(self,file_path):6 pass
7
8 deffile_delete(self,file_path):9 pass
10
11 deffile_add(self,file_path):12 pass
13
14 classExcel:15 defexcel_read(self,file_path):16 pass
17
18 defexcel_update(self,file_path):19 pass
20
21 defexcel_delete(self,file_path):22 pass
23
24 defexcel_add(self,file_path):25 pass
归类
1 classFile:2 def __init__(self,file_path):3 self.file_path =file_path4
5 deffile_read(self):6 pass
7
8 deffile_update(self):9 pass
10
11 deffile_delete(self):12 pass
13
14 deffile_add(self):15 pass
16
17 classExcel:18 def __init__(self,file_path):19 self.file_path =file_path20
21 defexcel_read(self):22 pass
23
24 defexcel_update(self):25 pass
26
27 defexcel_delete(self):28 pass
29
30 defexcel_add(self):31 pass
32
提取公共值
方法二:在指定类中编写和当前类的所有相关代码 + 提取公共值
1 classMessage:2 defemail(self):3 pass
4
5 classPerson:6 def __init__(self,na, gen, age, fig)7 self.name =na8 self.gender =gen9 self.age =age10 self.fight =fig11
12 defgrassland(self):13 self.fight = self.fight - 10
14
15 defpractice(self):16 self.fight = self.fight + 90
17
18 defincest(self):19 self.fight = self.fight - 666
20
21
22 cang = Person('苍井井', '女', 18, 1000) #创建苍井井角色
23 dong = Person('东尼木木', '男', 20, 1800) #创建东尼木木角色
24 bo = Person('波多多', '女', 19, 2500) #创建波多多角色
25
26 dong.grassland()
类代码和公共值
面向对象的三大特性:封装/继承/多态
封装:
将相关的功能封装到一个类中:
classMessage:def emil(self):pass
def msg(self):pass
def wechat(self):pass
...
将数据封装到一个对象中:
classMessage:def emil(self):pass
def msg(self):pass
def wechat(self):pass
...
继承:
classSuperBase:deff3(self):print('f3')class Base(SuperBase): #父类,基类
deff2(self):print('f2')class Foo(Base): #子类,派生类
deff1(self):print('f1')
obj=Foo()
obj.f1()
obj.f2()
obj.f3()#原则:现在自己类中找,么有就去父类
=-=
总结:
1. 继承编写
class Foo(父类):
pass
2. 支持多继承(先找左/再找右)
3. 为什么要有多继承? 提供代码重用性
多态:
多种形态或者多种状态
由于python原声支持多态,所以没有特殊性
1 classFoo1:2 deff1(self):3 pass
4
5 classFoo2:6 deff1(self):7 pass
8
9 classFoo3:10 deff1(self):11 pass
12
13
14 deffunc(arg):15 arg.f1()16
17 obj = Foo1() #obj= Foo2() obj = Foo3()
18 func(obj)
python
classSon(list):pass
classSon1(list):pass
#以后传参时,arg可以是:list类的对象/list任何子类的对象
public void func(list arg){print(arg)
}#obj = list()
#obj = Son()
obj =Son1()
func(obj)
java伪代码
python心跳的实现_(python)面向对象相关推荐
- python多进程编程实例_[python] Python多进程编程技术实例分析
这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...
- python查看excel编码格式_[Python]实现处理读写xlsx xls excel文件格式(含中文处理方法)...
最近有个需求要处理excel 格式的数据,数据量比较大.用传统的语言似乎不太好处理,于是改用python实现,这里记录一下实现过程. 首先,科普一下xlsx xls的excel文件区别是什么. xls ...
- python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程
用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...
- python朋友圈刷屏_“Python太火了!请救救Java!”9万程序员刷屏朋友圈 !
没想到有生之年,笔者能观察到"霸主陨落"的过程,继PLPY4月榜单官宣,Python躺赢,再度"夺"冠,实力甩下Java和C后,近期,Stack Overflo ...
- python 打包 小文件_[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件
1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...
- python shell如何打开_“python shell怎么打开“python shell启动教程
python shell怎么打开 1.简介:如何在python中运行shell(bash命令) 2.工具/原料:python库:os.py 3.方法:import os command = 'date ...
- python输出文本居中_#python PIL ImageDraw text 文本居中#
python pip pil有什么东西 你所问的问题实是属1.先参考[教程]Python中的内置的和方的模块搞懂PIL是属于第三方Python模块2.再参考:[待完善][总结]Python安装第三方的 ...
- python判断素数程序_使用面向对象方法检查素数的Python程序
python判断素数程序 This program will check whether a given number is Prime or Not, in this program we will ...
- python心跳包原理_心跳包机制设计详解 转载
存在下面两种情形: 情形一:一个客户端连接服务器以后,如果长期没有和服务器有数据来往,可能会被防火墙程序关闭连接,有时候我们并不想要被关闭连接.例如,对于一个即时通讯软件,如果服务器没有消息时,我们确 ...
最新文章
- Redis + Tomcat + Nginx 集群实现 Session 共享
- 推荐开发工具系列之--FireGestures(火狐手势命令)
- stm8s003 8K空间不够用,出现报错,修改stvd参数进行最优化
- VTK:隐式布尔值demo用法实战
- 监控java_Java应用程序监控JavaMelody
- 写在2009年的开始
- python 模块路径搜索_Python模块搜索路径问题
- 解决window.open被拦截问题
- mysql+基本代码_PHP+MySQL扎实基本功十句话_php
- python爬虫之模拟登陆csdn
- cfe刷机教程 斐讯k3_PHICOMM 斐讯 K3 路由器 刷机教程
- 费马大定理四分之一解决
- 2020年高效搬砖必备的IDEA插件(附安装包)
- Python10行代码实现模拟百度搜索
- 机器学习(7)——安然数据集分析
- 华为交换机导入配置_华为交换机通用配置方式方法
- xampp php搭建失败,ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败),thinkphpxampp...
- Odb文件(Abaqus)数据结构的一些思考
- Oracle字符集讨论(转)
- 人工神经网络是符号主义,神经网络的符号表达式
热门文章
- 整理了7道Python函数的练习题,希望对你学习函数有帮助
- python中,如何将多行进行输出,同时将行尾的换行符去掉
- Python引用模块和查找模块路径
- java中字段值重复校验,Java中一些常见的字段校验
- idea2020 需要热部署吗_小微制造企业需要部署MES系统吗?
- 拉格朗日乘数法(一种寻找变量受一个或多个条件所限制的多元函数的极值的方法)
- python sklearn.svm.SVC() 使用方法
- Future和CompletableFuture的区别和对比,以及Future主要的四个缺点——不能回调会阻塞、批量任务处理彼此依赖会阻塞、不能多个任务级联执行、得不到最先完成的任务
- Make it Divisible by 25 思维
- div中定义局部变量_说说 Go 中的变量(附粗制滥造面试题)