当前位置: 首页 > news >正文

手机网站排名3天网站seo优化成为超级品牌

手机网站排名,3天网站seo优化成为超级品牌,网站建设的优点,贵德县建设局网站下面是小凰凰的简介,看下吧! 💗人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活 💗学习技能:网络 -> 云计算运维 -> python全栈( 当前正在学习…

下面是小凰凰的简介,看下吧!
💗人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活
💗学习技能:网络 -> 云计算运维 -> python全栈( 当前正在学习中)
💗您的点赞、收藏、关注是对博主创作的最大鼓励,在此谢过!
有相关技能问题可以写在下方评论区,我们一起学习,一起进步。
后期会不断更新python全栈学习笔记,秉着质量博文为原则,写好每一篇博文。

文章目录

    • 一、反射
        • 1、引言
        • 2、根据现有知识实现反射机制(反射应用的具体场景)
        • 3、采用反射机制的专用方法实现反射
    • 二、内置方法
        • 1、_\_str__
        • 2、_\_del__

一、反射

1、引言

首先假设我们要搞一个程序项目对接,对方向你扔过来了一个对象数据,但是他并不会告诉你这个对象数据有哪些数据属性、函数属性,如果试的话就会出现报错的情况。我们怎样解决这种情况呢?这就要用到反射了,然而说反射之前,我先说下动态语言这一概念!

python是一门动态语言,如何理解?

答:举个例子,python:x = 10,java: int x = 10# 这就是动态语言与静态语言的区别,python这句代码,程序只有在执行的时候,你才知道它是整型还是啥,因此python是动态语言。然而java在定义时就指明了类型,因此它是静态语言。# 注意:我听有人说反射机制对动态语言很重要,静态语言好多都没有。但是我感觉有无反射,这应该与动态还是静态并没有什么联系。

2、根据现有知识实现反射机制(反射应用的具体场景)

>>> class People:
...     def __init__(self,name,age,gender):
...         self.name=name
...         self.age=age
...         self.gender=gender
>>> obj=People('egon',18,'male')
>>> dir(obj) # 下面全是obj这个对象能'.'出来的属性,它们全为字符串
[......,'age', 'gender', 'name']
# 假如我们程序对接需要obj这个对象的name属性
>>> obj.dir(obj)[-1] # 相当于obj.'name',这个可以这样吗,显然是不行的。
# ---- 怎么办?-----
>>> obj.__dict__[dir(obj)[-1]] # 这样我们就实现了反射,但是这样太复杂了,我们有专门的方法,更简单的实现反射!
'egon'

3、采用反射机制的专用方法实现反射

class Teacher:def __init__(self,full_name):self.full_name =full_namet=Teacher('Egon Lin')# hasattr(object,'name')
hasattr(t,'full_name') # 按字符串'full_name'判断有无属性t.full_name# getattr(object, 'name', default=None),存在则返回名为'full_name'的方法
getattr(t,'full_name',None) # 等同于t.full_name,不存在该属性则返回默认值None# setattr(x, 'y', v)
setattr(t,'age',18) # 等同于t.age=18# delattr(x, 'y')
delattr(t,'age') # 等同于del t.age

基于反射可以十分灵活地操作对象的属性,比如将用户交互的结果反射到具体的功能执行

>>> class FtpServer:
...     def serve_forever(self):
...         while True:
...             inp=input('input your cmd>>: ').strip()
...             cmd,file=inp.split() # 看下下方的输入,就明白了为什么cmd,file
...             if hasattr(self,cmd): # 根据用户输入的cmd,判断对象self有无对应的方法属性
...                 func=getattr(self,cmd) # 根据字符串cmd,获取对象self对应的方法属性
...                 func(file) # 上面这句代码等同于sever.去掉字符串的cmd,因此还需要传参file
...     def get(self,file):
...         print('Downloading %s...' %file)
...     def put(self,file):
...         print('Uploading %s...' %file)
... 
>>> server=FtpServer()
>>> server.serve_forever()
input your cmd>>: get a.txt
Downloading a.txt...
input your cmd>>: put a.txt
Uploading a.txt...

二、内置方法

Python的Class机制内置了很多特殊的方法来帮助使用者高度定制自己的类,这些内置方法都是以双下划线开头和结尾的,会在满足某种条件时自动触发,我们以常用的__str____del__为例来简单介绍它们的使用。

1、__str__

__str__方法会在对象被print打印时自动触发,即是说print功能打印就调用的是这个方法,并打印这个方法的返回值,我们通常基于方法来定制对象的打印信息,该方法必须返回字符串类型

>>> class People:
...     def __init__(self,name,age):
...         self.name=name
...         self.age=age
...     def __str__(self):
...         return '<Name:%s Age:%s>' %(self.name,self.age) #返回类型必须是字符串
... 
>>> p=People('lili',18)
>>> print(p) #触发p.__str__(),拿到返回值后进行打印
<Name:lili Age:18>

如果不定制的话就会打印对象的内存地址,我们要内存地址有什么用?因此我们通过str定制,打印对象时,打印我们想看到的有用信息。

2、__del__

__del__会在对象被删除时自动触发。由于Python自带的垃圾回收机制会自动清理Python程序的资源,所以当一个对象只占用应用程序级资源时,完全没必要为对象定制__del__方法,但在产生一个对象的同时涉及到申请系统资源(比如系统打开的文件、网络连接等)的情况下,关于系统资源的回收,Python的垃圾回收机制便派不上用场了,需要我们为对象定制__del__方法,用来在对象被删除时,自动触发回收系统资源的操作

# 这里我们用打开文件为例,使其回收打开文件占用的内存资源
class MySQL:def __init__(self):self.read_f=open ('a.txt',mode = 'r') # 打开文件def __del__(self):self.read_f.close() # 关闭文件,回收系统内存资源obj=MySQL() # 在对象obj被删除时,自动触发obj.__del__()

对象被删除有两种情况:

  • 执行del obj代码,主动删除
  • 程序运行完毕,全部对象都被删除
http://www.lbrq.cn/news/2533627.html

相关文章:

  • wordpress 时间归档seo搜索优化软件
  • 海盐市网站建设360推广官网
  • 网站建设栏目说明工程建设数字化管理平台
  • 建设学校网站论文网站关键词如何快速上首页
  • 重庆做网站seo优化选哪家好北京seo公司网站
  • 怎么做贝店式的网站刷seo关键词排名软件
  • 网站链接怎么做标记营销策划方案公司
  • 建站工具华为百度推广在线客服
  • 美女色情做视频网站有哪些电脑系统优化软件
  • wordpress商城建站教程软文宣传
  • 做网站图片多少钱成都百度推广账户优化
  • wordpress 播放大视频成都网站seo
  • 如何知道网站是用什么语言做的百度店铺
  • 设计灵感网站整理百度合作平台
  • 京挑客网站建设网络推广员要怎么做
  • 网站中宣传彩页怎么做的刷排名seo
  • 购物网站建设方案seo诊断a5
  • 专门做地图的网站温州seo推广外包
  • 海口市做网站的公司怎么样把广告做在百度上
  • 上海网络推广培训二十条优化措施全文
  • 一般网站建设步骤媒体发稿费用
  • 常州网站建设市场高清免费观看电视网站
  • 中企动力 网站建设 眼镜巨量引擎广告投放平台官网
  • 个人建网站需要什么手续查询网站
  • 哪里需要人做钓鱼网站网络游戏推广
  • 宁乡电商网站建设报价在线识别图片
  • 绵阳网站建设怎么做十大骗子教育培训机构
  • 泰安最好网站建设公司it教育培训机构排名
  • 室内设计培训网站重庆seo报价
  • 广州海珠做网站的公司互联网营销师报名费
  • USRP捕获手机/路由器数据传输信号波形(下)
  • 代码随想录算法训练营第三十六天
  • Python 程序设计讲义(45):组合数据类型——集合类型:集合的常用操作
  • Redis实现数据传输简介
  • Python 程序设计讲义(36):字符串的处理方法——去除字符串头尾字符:strip() 方法、lstrip() 方法与rstrip() 方法
  • 【编号65】广西地理基础数据(道路、水系、四级行政边界、地级城市、DEM等)