当前位置: 首页 > 面试题库 >

为什么__dict__类是映射代理?

龙德义
2023-03-14
问题内容

我不知道为什么一个类__dict__是一个mappingproxy,但是一个实例__dict__只是一个普通的dict

>>> class A:
...     pass

>>> a = A()
>>> type(a.__dict__)
<class 'dict'>
>>> type(A.__dict__)
<class 'mappingproxy'>

问题答案:

这有助于解释器确保类级属性和方法的键只能是字符串。

在其他地方,Python是一种“成年人同意语言”,这意味着对象的指示由用户公开和可变。但是,对于类的类级属性和方法,如果可以保证键是字符串,则可以在类级简化和加快用于属性和方法查找的常见案例代码。尤其是,通过假定类dict键为字符串,可以简化和加快用于新型类的__mro__搜索逻辑。



 类似资料:
  • 蜻蜓映射是一款动态域名解析软件,外网通过蜻蜓映射域名随时随地访问到内网搭建服务。 蜻蜓映射是内网穿透,端口映射的软件服务商。支持HTTP、HTTPS、TCP、UDP、等多种协议。 无需设置路由器端口映射即可外网访问内网服务器。适用于远程桌面、 远程服务器、远程办公、游戏联机、微信开发调试等内网穿透场景。蜻蜓映射端口映射官网 如何使用蜻蜓映射 注册账号 下载客户端并登录 添加映射

  • 问题内容: 最近,我一直在寻找Java虚拟机规范(JVMS),以试图更好地理解使我的程序正常工作的原因,但是我找到了一段我不太了解的部分… 第4.7.4节介绍了 StackMapTable 属性,在该节中,文档介绍了有关堆栈映射框架的详细信息。问题是它有点罗word,我以身作则,学得最好。不读书。 我知道第一个堆栈映射框架是从方法描述符派生的,但是我不知道如何(应该在这里进行解释。)而且,我也不完

  • 问题内容: 我尝试创建映射,期望它会自动增长。如手册页中所指定: MAP_GROWSDOWN 该标志用于堆栈。它向内核虚拟内存系统指示该映射应在内存中向下扩展。返回地址比在进程的虚拟地址空间中实际创建的内存区域低一页。 触摸映射下方的“防护”页面中的地址,将导致 映射增加一页 。可以重复这种增长,直到该映射增长到下一个较低映射的高端的页面内为止,此时触摸“防护”页面将产生 信号。 因此,我编写了以

  • 问题内容: 什么是反射,为什么有用? 我对Java特别感兴趣,但是我认为原理在任何语言中都是相同的。 问题答案: 名称反射用于描述能够检查同一系统(或本身)中的其他代码的代码。 例如,假设您在Java中有一个未知类型的对象,并且想在该对象上调用“ doSomething”方法(如果存在)。除非对象符合已知的接口,否则Java的静态类型化系统并不是真正为支持该类型而设计的,但是使用反射,您的代码可以

  • 我不熟悉Spring数据jpa,并试图理解@OneToOne映射。假设我有一个员工实体和一个公司实体,如果我想映射这两个实体,那么我可以在员工实体上使用一对一映射,这意味着一个员工只能属于一个公司。这种理解是错误的吗?如果一名员工属于一家公司(比如XYZ),那么该公司(XYZ)不能映射到其他员工? 我读过一些帖子,但没有完全理解。

  • 问题内容: 在玩Go代码时,我发现映射值不可寻址。例如, 产生错误 mapaddressable.go:7:无法获取mymap [1]的地址 而代码, 工作完美。 为什么会这样呢?为什么Go开发人员选择使某些值无法解决?这是语言的缺点还是功能? 编辑 :来自C ++背景,我不习惯于这种流行趋势。例如,以下代码可以正常工作: 如果有人可以指出为什么在Go中无法实现(或故意没有实现)相同的 寻址 能力