Python面向对象的微信应用开发

一、案例背景

微信,是我们每个人身边交往和联系的工具。几乎每个人都在用着微信, 那我不免要问一下使用微信的朋友,你觉得你的微信里有多少个男性朋友,又有多少个女性朋友呢?你有男性朋友多了,是不是证明你这个人比较爱认识铁哥们。你有女朋友多了,是不是证明你这个人比较爱认姐们呢?不过,提醒各位,交友须谨慎哟。不过,今天的话题是找到你的微信里有多少个男性的朋友,有多少个女性的朋友,你猜猜,会不会有不男不女的朋友呢?

二、案例结果

三、先面向过程进行分析

根据图示思路进行代码的编写,代码中需要安装模块wxpy。

'''
初始化机器人
'''
bot = Bot()
'''
获取微信机器人列表
'''
myFriends = bot.friends()
'''
定义字典,存储在sex_dict中,记录男女总数
'''
sex_dict = {'male':0,'female':0}
'''
遍历myFriends列表中每一个朋友圈朋友成员。
'''
for friend in myFriends:
'''
如果是男的,记录男的总和加1,女的,记录女的总和加1
'''if friend.sex == 1:sex_dict['male'] +=1elif friend.sex ==2:sex_dict['female'] +=1
print(sex_dict)

四、用面向对象的方法改写: 把上面程序改成面向对象的小案例,就可以把语句放到类的方法里,然后执 行类的方法就行了,因为这段代码合在一起完成一个功能,我们可以把他们封装在一起,供我们使用一个方法直接调用即可。

class Friend:def getFriend(self): bot = Bot()myFriends = bot.friends()sex_dict = {'male':0,'female':0}for friend in myFriends:if friend.sex == 1:sex_dict['male'] +=1elif friend.sex ==2:sex_dict['female'] +=1print(sex_dict)
if __name__==”__main”:'''实例化Friend类'''friend=Friend()'''执行Friend里面的getFriend方法'''friend.getFriend()

五、可以把getFriend()封装成私有方法,然后在里面提供一个公共的接口方法,外部再调用。私有方法的实现代码如下。

class Friend:'''定义私有方法'''def __myfriend(self):bot = Bot()myFriends = bot.friends()sex_dict = {'male':0,'female':0}for friend in myFriends:if friend.sex == 1:sex_dict['male'] +=1elif friend.sex ==2:sex_dict['female'] +=1print(sex_dict)def getFriend(self): __myfriend()
if __name__==”__main”:'''实例化Friend类'''friend=Friend()'''执行Friend里面的getFriend方法'''friend.getFriend()

六、现在把getFriend()加上@classmethod装饰器,再去看程序的具体调用方法。

class Friend:'''定义私有方法'''def __myfriend(self):bot = Bot()myFriends = bot.friends()sex_dict = {'male':0,'female':0}for friend in myFriends:if friend.sex == 1:sex_dict['male'] +=1elif friend.sex ==2:sex_dict['female'] +=1print(sex_dict)'''加classmethod装饰器,参数一般使用类参数'''@classmethoddef getFriend(cls): __myfriend()
if __name__==”__main”:'''调用@classmethod修饰的方法,可以不用实例化'''Friend.getFriend()

六、现在继续把getFriend()加上@staticmethod装饰器,再去看程序的具体调用方法。

class Friend:'''定义私有方法'''def __myfriend(self):bot = Bot()myFriends = bot.friends()sex_dict = {'male':0,'female':0}for friend in myFriends:if friend.sex == 1:sex_dict['male'] +=1elif friend.sex ==2:sex_dict['female'] +=1print(sex_dict)'''加staticmethod装饰器,根据函数的需要再使用参数'''@staticmethoddef getFriend(cls): __myfriend()
if __name__==”__main”:'''调用@staticmethod修饰的方法,可以不用实例化'''Friend.getFriend()

七、分析微信好友技术的提升。

用面向对象的方法分析微信好友是对面向对象编程的总结与归纳,同时微信中的一些分析也是面试项目比较新颖的类型,后期学习深入可以根据微信的分析去推送朋友信息或者是一些快讯、新闻等信息,也可以提供当地的导航服务等。你可以输出微信好友的对象结构,根据不同的属性去开发不同的应用。

from wxpy import Bot
'''初始化机器人
'''
bot = Bot()
'''获取微信机器人列表
'''
myFriends = bot.friends()
'''打印微信好友中 某一个人的对象结构.
'''
print(dir(myFriends[0]))

上述代码的运行结果如图所示。

八、微信结合pyecharts画微信好友分布图。

下面结合pyecharts模块去画一下微信好友的全国分布图,pyecharts最好的特性在于可以画中国地图,根据微信好友的province省份属性可以去画一下微信好友全国分布图。

注意,pyechars画地图的方法是固定的,但是千万要保证你的微信好友没有外国的,或者没有空值,否则中国地图上找不到地点,程序就会报错,在程序中使用if '\u4e00' <= key < '\u9fff'语句来实现只接收中文信息,这里默认中文信息都是中国的省份。代码如下。代码中需要安装模块wxpy和pyecharts。

from wxpy import Bot
from pyecharts.charts import Geo
'''初始化机器人
'''
bot = Bot()
'''获取微信机器人列表
'''
myFriends = bot.friends()
'''定义空字典,存储在微信中地址的键和值
'''
address_dict = {}
'''遍历myFriends列表中每一个朋友圈朋友成员。
'''
for friend in myFriends:
'''如果是字典中没有,字典中建立相应的键,并将键值记录为0,然后在有键值的基础加1,如果有就在原来基础上加1
'''if friend.province not in address_dict.keys():address_dict[friend.province]=0address_dict[friend.province] +=1
'''定义两个空列表,接收有效的地名和朋友数量
'''
xx=[]
yy=[]
for keys,value in address_dict.items():'''判断键值不能为空'''if keys!='':'''对键值中每个汉字或字母进行遍历'''for key in keys:'''单独判断键值中字母或数字是否是汉字'''if '\u4e00' <= key <= '\u9fff':xx.append(keys)yy.append(value)
'''将地址和朋友数量用zip进行对应
'''
aa=[list(z) for z in zip(xx,yy)]
geo=(Geo().add_schema(maptype="china").add("微信好友全国分布图",aa))
'''将画出的地图数据结果渲染到网页上
'''
geo.render("微信好友全国分布图.html")

上述代码的运行结果如图所示。

Python实战项目:Python面向对象的微信应用开发相关推荐

  1. python实战项目示例 :揭秘微信朋友圈(调用wxpy库)

    通过python,连接到微信账号,收集好友性别.城市.个性签名等公开信息,使用 Python 进行数据统计与分析,得到你专属的朋友圈的分析报告! github地主:https://github.com ...

  2. python项目归纳总结-这4个Python实战项目,让你瞬间读懂Python!

    原标题:这4个Python实战项目,让你瞬间读懂Python! 来自:https://www.toutiao.com/a6593456515221291528/ Python 是一种极具可读性和通用性 ...

  3. python项目-这4个Python实战项目,让你瞬间读懂Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  4. python有趣的小项目-有趣的十个Python实战项目,让你瞬间爱上Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  5. python项目实战干货_干货 | 这4个Python实战项目,让你瞬间读懂Python!

    Python是一种极具可读性和通用性的编程语言.Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Python易于设置, ...

  6. python十个运维实战项目_干货 | 这4个Python实战项目,让你瞬间读懂Python!

    Python是一种极具可读性和通用性的编程语言.Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Python易于设置, ...

  7. python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  8. python能做什么项目-这十个Python实战项目,让你瞬间读懂Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  9. 精选100个Python实战项目案例,送给零基础小白的你

    前言 随着 Python 语言的流行,越来越多的人加入到了 Python 的大家庭中.为什么这么多人学 Python ?我要喊出那句话了:"人生苦短,我用 Python!",正是因 ...

最新文章

  1. Vue+element UI实现“回到顶部”按钮组件
  2. 【跃迁之路】【725天】程序员高效学习方法论探索系列(实验阶段482-2019.2.15)...
  3. [Ahoi2013]差异[后缀数组+单调栈]
  4. 萨克斯维修服务器,萨克斯常见故障修理方法
  5. c语言中go的作用,go语言与c语言的相互调用
  6. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园
  7. Oracle数据库管理员职责(二)
  8. float php 运算_系统的讲解 - PHP 浮点数高精度运算
  9. cannot load php5,Cannot load php5apache2_4.dll into server解决办法
  10. 自组四旋翼2015.9
  11. Atitit usrqbg1834 html的逻辑化流程化 规范标准化解决方案
  12. 《数据库系统概论》期末复习速成
  13. ubuntu安装nginx报错:Failed to start A high performance web server and a reverse proxy server
  14. Linux实现黑客帝国背景炫酷效果
  15. PDF 解锁(unlock)
  16. java的视频案例教学 值得下载
  17. 涉密计算机默认安全用户名,机密级涉密计算机的系统登录如采用用户名加口令的方式,则系统口令更换周期不得长于 - 作业在线问答...
  18. JVM safe point 安全点和 counted loop 可数循环
  19. VUE 物理返回键的处理
  20. LibreCAD_3编译遇到的问题

热门文章

  1. i3 1005g1和i5 8265u哪个好
  2. javaj基础之泛型
  3. 11月书讯(上)| 这些好书必须“买买买”!
  4. Golang的执行流程,即注意事项
  5. 12306能删候补订单记录_12306官方APP候补订单退单后不退款
  6. 洛谷P2341(受欢迎的牛)题解
  7. Python缺失值的处理
  8. 利用梯度下降法实现线性回归--python实现
  9. linux oracle lrm00109,Oracle:ORA-01078与LRM-00109报错
  10. 友盟创始人蒋凡---谷歌中国地图工程师