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

网站收录提交入口怎么做西安百度快速排名提升

网站收录提交入口怎么做,西安百度快速排名提升,珠海高端网站建设,阳江网络问政平台 周报引言 在前面介绍Python容器的时候,我们曾经用过这种夸张的表述,“Python就是包裹在一堆语法糖中的字典”。虽然夸张,其实更多的是为了突出Python中dict的强大之处。今天这篇文章,打算看下Python中类对象、实例对象的表示及内存管理…

引言

在前面介绍Python容器的时候,我们曾经用过这种夸张的表述,“Python就是包裹在一堆语法糖中的字典”。虽然夸张,其实更多的是为了突出Python中dict的强大之处。今天这篇文章,打算看下Python中类对象、实例对象的表示及内存管理,又会涉及到dict。

实例对象的__dict__属性

先说结论,从内部实现的角度来看,实例是使用字典(dict)来实现的。

前面介绍私有化属性时,已经简单用到过__dict__这个属性,可以通过实例的__dict__ 属性访问实例底层的字典。这个字典包含的数据对每个实例而言都是唯一的。可以在任何时候向实例添加新属性。也是通过__dict__。

对实例的修改始终会反映到局部__dict__ 属性中。同样,如果直接对__dict__ 进行修改,所做的修改也会反映在实例的属性中。

通过代码来验证这个结论:

class DaGongRen:def __init__(self, name, age, salary):self.name = nameself.age = ageself.__salary = salarydef get_salary(self):return self.__salaryif __name__ == '__main__':dgr = DaGongRen('张三', 18, 100)# 从__dict__中可以看到实例所有的属性,包括混淆名称后的私有属性print(dgr.__dict__)# 通过obj.attr的方式修改属性dgr.age = 20# 再次查看__dict__,age对应的value同步变更print(dgr.__dict__)# 通过__dict__直接修改value值dgr.__dict__['name'] = '李四'# 实例的属性同步发生变更print(dgr.name)# 私有属性也一样dgr.__dict__['_DaGongRen__salary'] = 9999print(dgr.get_salary())

执行结果:

618a092c81e2ca4e4cd8b660a197377b.jpeg

类对象的__dict__属性

其实,类本身也只是对字典的浅层包装,我们可以在实例的__dict__ 属性中找到这个字典。

直接看代码:

from rich.pretty import pprintclass DaGongRen:"""这里是说明文档,会存储在__doc__属性中"""cnt = 0def __init__(self, name, age, salary):self.name = nameself.age = ageself.__salary = salaryself.__class__.cnt += 1def get_salary(self):return self.__salary@classmethoddef test_class_method(cls):print(cls)@staticmethoddef test_static_method():print("test")if __name__ == '__main__':# 查看类对象的__dict__pprint(DaGongRen.__dict__)dgr = DaGongRen('张三', 18, 100)# 通过类对象的__dict__调用get_salary()方法,由于是通过类对象调用,第一个参数self需要手动传递print(DaGongRen.__dict__['get_salary'](dgr))# 调用类方法DaGongRen.__dict__['test_class_method'].__func__(DaGongRen)# 调用静态方法DaGongRen.__dict__['test_static_method'].__func__()

执行结果:

6b3b928ad9c0b584750296f082aac102.jpeg

从执行结果中,可以看出,类对象也是有__dict__属性的,存储的是在类中定义的实例方法、类方法和静态方法以及类属性等。

总结

通过对比实例对象的__dict__和类对象的__dict__相关代码的示例,可以得出如下结论:

1、对象底层是对dict做了一层弱封装,不管是实例对象还是类对象。

2、类中定义的类属性属于类,存储在类对象的__dict__属性对应的字典中;类的__init__初始化方法或者实例对象中动态添加的属性,属于实例对象,存储在实例对象的__dict__属性对应的字典中。

3、类中定义的方法,不管是实例方法、类方法,还是静态方法,都属于类,统一存储在类对象的__dict__属性对应的字典中。

4、实例方法其实就是普通的函数对象,类方法和静态方法分别对函数对象做了一层对应的封装。

通过这篇文章,我们应该能够对类、实例的存储有了更进一步的理解。

但是,还有一个问题。既然,Python中一切皆对象,对象底层又是对dict的封装,那么问题来了,为什么有些内置类型的对象没有__dict__属性,或者无法在__dict__属性中找到类中定义的实例属性?

这个问题,涉及到对象内存的管理与优化,我们放到下一篇文章中来回答。

感谢您的拨冗阅读,如果对您学习Python有所帮助,欢迎点赞、收藏。

http://www.fp688.cn/news/144380.html

相关文章:

  • 自己给网站做优化怎么做百度搜索推广操作简要流程
  • 公司网站开发流程太原seo关键词优化
  • wordpress301不能用seo规范培训
  • 域名查询权威网站seo关键词优化培训班
  • 做网站什么前端框架方便廊坊快速排名优化
  • web程序设计与实践做网站网站推广营销运营方式
  • 二手网站建设媒体:多地新增感染趋势回落
  • 网站描述更改精准的搜索引擎优化
  • 查询公司的网站备案信息查询站长工具平台
  • 怎样创建网站教程海淀搜索引擎优化seo
  • 支付宝手机网站支付二维码怎么做新闻联播直播 今天
  • 金融理财网站建设方案网络营销推广公司有哪些
  • 网站开发团队奖惩搜索引擎营销题库和答案
  • 湘潭网站建设 就问磐石网络专业关键词优化策略有哪些
  • 软件系统定制开发洛阳seo博客
  • 怎么在网站上做排名广州网站优化
  • 北京网络建站模板推广方案是什么
  • 热点新闻事件真实事件郑州seo外包费用
  • 锡盟建设局网站网站排名优化+o+m
  • 新吴区推荐做网站电话亚马逊关键词搜索器
  • 手机网站快速排名 软件网站广告调词平台
  • 江阴哪里有做网站的专业网页设计和网站制作公司
  • 湖北医院网站建设千锋教育靠谱吗
  • asp.net做网站教程社群运营的经典案例
  • 点墨网站百度知道网页版进入
  • 企业官网建站联系我们百度云app
  • 网站建设专业知识应用伊春seo
  • 临沧网站开发文章优化软件
  • 专门做消防器材的网站免费推广网站大全下载安装
  • 甘肃兰州天气预报15天搜索引擎关键词优化技巧