python中key_python属性和key的区别?
super已经有人解释了,就不画蛇添足了。d['c'] = 100
d.c-------->不加__getattr__()会显示访问失败
d['c']和d.c是有什么区别吗
第一眼看上去感觉是JS开发者。。。d.c,访问的是d的属性,你也发现了,访问的是__getattr__,Python用一个字典维护着属性。
d['c'],访问的是__getitem__,通过这个方法访问字典内部的数据结构。
对于d['c'],字典中的键是字符串'c',而d.c在Python语境中,认为c是d的一个属性,而不是字典的键。
举个例子:
>>> a = {(1, 2): 'ab'}
>>> a[(1, 2)]
'ab'
按照试图用属性访问的话,难不成写成a.(1,2)这样的形式?这根本不是合法的Python语句。
所以访问字典中的键,还是用方括号吧。
补充:
其实,你要是真想这么做,完全不用自己写__getattr__,只要这么做就行了。加不加super,就看自己需求了。
class Dict(dict):
def __init__(self, **kw):
self.__dict__ = self
但强烈不建议这么做。Python的键和属性访问在语义上有明确的区别,最好还是分开使用。
再补充:
评论有朋友指出不要继承dict,这是对的。但我想有人会问那应该继承什么,答案是collections模块中的MutableMapping这个ABC。(不过好像走题了。。)
python中key_python属性和key的区别?相关推荐
- 如何在Python中读取属性文件?
We can use jproperties module to read properties file in Python. A properties file contains key-valu ...
- Python中爬虫框架或模块的区别
Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...
- Python中值传递和引用传递区别
原文:http://blog.csdn.net/xuqiaobo/article/details/72236539 举例,函数参数如果是dic,都不需要返回值,原值就被改变了 def aa(dic): ...
- Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...
Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...
- python 中 property 属性的讲解及应用
Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 装饰器 即:在方法上应用装饰器 类属性 即:在类中定义 ...
- python中列表 元组 字典 集合的区别
参考文章:python中列表 元组 字典 集合的区别
- Python中爬虫框架或模块的区别!
Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...
- 【Python】Python中str()和repr()函数的区别
作用 在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() . 区别与使用 参考文章:Python 中 str() 和 repr() 函数的 ...
- python中的return和print的区别_python中return和print的区别(详细)
Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...
最新文章
- 计算机保研去北科大还是大工,全部保研!大工这寝室太牛
- 使用visual studio code调试php代码
- hive中如何读取数组_hive解析json嵌套数组
- java 不能使用foreach_为什么我不能在Java Enumeration上使用foreach?
- android smart scale
- matplotlib之scatter散点、bar直方图(笔记四)
- 【主席树】bzoj1112: [POI2008]砖块Klo
- 使用剪切板[4]: 如果把子控件一起复制? - 同时回复 ghd2004 的问题
- 编译x264出现错误:No working C compiler found.
- Matlab 警告: 名称不存在或不是目录
- Android抓包工具——Fiddler
- [linux] ab压测工具进行post压力测试
- 谷歌学术镜像mark
- 【Unity实战100例】Unity制作脑图编辑工具(全网第一首发)
- 百度提升关键词排名优化软件,百度点击器,百度排名软件,百度竞价助手
- 卸载百度软件修复服务器,快速修复win7系统笔记本卸载百度软件中心助手的解决教程...
- 主流加密通信应用Signal在中国“失联”
- 情若人间诗词主角夏当午萧楚河by丫妖炎炎全文免费在线阅读
- 第三部分PaddleX模型集_3.2 目标检测
- STC 单片机应使用何种编译器/汇编器
热门文章
- oracle定时向mysql取数据_Oracle中通过Job实现定时同步两个数据表之间的数据
- git只提交一张图片_几张图让你彻底弄懂git工作流(三) ——git深入
- linux mariadb 图形化,linux 初学者 - MariaDB 图形管理篇
- springboot nacos_springboot集成nacos
- mysql 防重复提交_怎样防止刷新重复提交、防后退
- python3中round的用法_Python 3标准库用法--reversed、round、set
- php移除所有子节点,jQuery删除/清空指定元素下的所有子节点的方法
- java list树 广度_java树的广度优先遍历思路
- nginx curl linux,linux nginx 下通过curl url方式,符以后的参数无效
- linux程序循环执行,Linux之循环执行任务