内置魔术变量名称/属性

2024-05-08

背景: 对于不熟悉的人来说,崇高的文字 http://sublimetext.com(和 TextMate)通过以下定义的范围提供语法突出显示和其他功能.tmLanguage语言定义文件,基本上是一堆正则表达式,用于识别给定语言中的各种构造,例如函数定义、各种类型的字符串、保留字等。

我是该项目的维护者Python 改进 https://github.com/MattDMo/PythonImproved包(可通过包控制 https://sublime.wbond.net/packages/Python%20Improved如果你有兴趣的话)这旨在成为 Python 更好的语言定义。如果您愿意,您可以在 GitHub 上阅读有关它的信息,但它的关键功能之一是它实际上得到了维护,这与许多多年来没有更改或更新的 Sublime 语言不同。

问题:我最近一直关注双下划线__magic__东西,找到后这篇优秀的论文 https://web.archive.org/web/20120504021327/http://www.rafekettler.com/magicmethods.html作者:Rafe Kettler 关于魔法函数的内容 我能够相当多地扩展语言定义的这一部分。然而,我在找到内置魔法变量名称或魔法属性的良好列表方面运气不佳,例如__class__ or __doc__。我已经经历了数据模型 http://docs.python.org/3/reference/datamodel.html文档的一部分,但对于我的目的来说,它还有一些不足之处,并且似乎主要集中在魔术方法名称上。

所以我的问题是,什么应该包含在support.variable.magic.python范围?到目前为止,这是它的定义:

\b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|module|name|slots|weakref)__\b

我开始这个项目的原因之一是自学更多关于 Python 的知识,到目前为止我确实取得了成功,但我在这一点上有点陷入困境。

需要明确的是,我并不是在寻找最喜欢的场外资源(尽管如果您有方便的链接,我将不胜感激),而且我也不想发起固执己见的讨论。我只想弄清楚这个列表是否按原样看起来合理,或者是否存在任何明显的错误。如果你do想要有主见,打开一个问题 https://github.com/MattDMo/PythonImproved/issues我非常乐意讨论。

Thanks!


唉,数据模型文档是我能想到的最完整的东西,它甚至没有真正设计为索引。不过,我并不完全清楚你在寻找什么;__all__是一个全局模块,__slots__是一个类属性,__weakref__仅以字符串形式出现在槽列表中,并且__module__是一个函数属性等。我猜想有什么特殊属性通常不可调用吗?

当然,你可以随时询问Python。

>>> dir(type)
['__abstractmethods__', '__base__', '__bases__', '__basicsize__', '__call__', '__class__', '__delattr__', '__dict__', '__dictoffset__', '__dir__', '__doc__', '__eq__', '__flags__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__instancecheck__', '__itemsize__', '__le__', '__lt__', '__module__', '__mro__', '__name__', '__ne__', '__new__', '__prepare__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasscheck__', '__subclasses__', '__subclasshook__', '__weakrefoffset__', 'mro']
>>> import sys
>>> dir(type(sys))
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

一眼望去你肯定缺了__mro__ and __subclasses__。让事情变得更加复杂的是,有一些特殊方法仅由恰好内置于 Python 中的代码使用,而不是由核心语言使用:示例包括__format__(由str.format)和各种 ABC 方法。

我什至不知道什么__weakrefoffset__ is.

请注意,Python 3 有一些新东西:__prepare__元类恶作剧使用的方法、函数和方法现在使用魔法名称作为其属性,而不是像噪音一样im_self(请参阅数据模型的“用户定义函数”部分),并且有一个__qualname__在模块和类上。

另外,导入PEP http://www.python.org/dev/peps/pep-0302/#specification-part-1-the-importer-protocol准确地提到了模块加载器应该做什么,包括设置一些神奇的属性:__name__, __file__, __path__, __loader__, and __package__.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内置魔术变量名称/属性 的相关文章

随机推荐

  • 图钉的 OnClickListener

    在这里我使用了谷歌地图和叠加层 我使用了图钉图像来指向 GeoPoint 我想设置一个OnClickListener图钉事件 当用户触摸 pin 时 我想吐槽一条消息 下面是代码 import java util List import c
  • 二叉堆对于优先级队列的优点?

    看来我错过了一些非常简单的东西 优先级队列的二进制堆与快速排序的值数组相比有什么优势 在这两种情况下 我们将值保存在数组中 插入的时间复杂度为 O logN 删除最大的时间复杂度为 O 1 在这两种情况下 给定元素数组的初始构造都是 O N
  • 无法使用include_graphics在Rmarkdown中插入png(错误:文件不是PNG格式)

    这个错误很奇怪 当我编织文档时 出现以下错误 Quitting from lines 42 43 sigminer doc Rmd Error in png readPNG path native TRUE info TRUE file i
  • INET6_ATON 的替代 MySQL 代码

    将旧的 INET ATON 值转换为新的二进制 INET6 ATON 值 无需 INET6 ATON INET6 NTOA 我们在表中已有数据 字段类型为UNSIGNED INT其中保存了使用以下命令创建的 IPv4 数据INET ATON
  • ERROR 188 (HY000): FTS 查询超出结果缓存限制 mysql

    我的表的文本列上有全文索引 约有 1100 万行 表结构 CREATE TABLE review id int 11 NOT NULL AUTO INCREMENT comments text COLLATE utf8mb4 unicode
  • 多个 Nodejs 应用程序的单点登录

    我们有 3 个 Nodejs Web 应用程序 在具有多个子域的同一 vps 上的同一域名上运行 并为每个应用程序实现护照身份验证 我们希望单个用户能够使用单个帐户访问所有应用程序 因此我们仅出于帐户管理的目的添加了accounts exa
  • 如何在 Django 管理 UI 的文本区域中保留空行?

    我在一个对象上有一个字段 我使用 Django 3 2 管理 UI 中的文本区域来渲染它这段代码 https stackoverflow com a 431412 就像是 class MyObject models Model some t
  • IPV6 Curl POST 请求

    在 IPV6 中 如何使用 IPV6 地址和端口号构建 CURL POST http 请求 任何类型的线程都将受到赞赏 尝试构建如下请求 gt curl interface http 2001 0 db8 1111 0 0 0 11 809
  • 为什么 UIScrollView 在顶部留有空间并且不滚动到底部

    我是 Objective C 编程新手 我正在使用 UIScrollView 及其上的一些标签 图像和文本视图 我已关闭自动布局 并已尝试打开 调整滚动视图插图 标题中描述的情况 和关闭 不滚动 这是我插入 viewDidLoad 的内容
  • Play 框架 2.0:在 Http.Context 中存储值

    我正在尝试在 Play 框架中的 scalaquery 中实现 基于请求 的会话 我使用 scalaquery 创建一个会话 并尝试将其存储在当前的 http 上下文中 如下所示 def withTransaction A bp BodyP
  • 如何将“重要”添加到 zIndex

    我网站上的某些附加组件之间存在冲突 使用 Firebug 我注意到如果我将 important 添加到 z 索引 我可以避免冲突 但 z index 值是使用 JavaScript 设置的 而不是 CSS 那么如何在以下 JS 代码中添加
  • C# 编译器如何删除发布版本中的 Debug.Assert?

    我最近正在浏览一些代码 并考虑是否需要小心放置在其中的表达式Debug Assert语句 例如昂贵的操作或具有副作用的操作 然而 编译器似乎非常聪明地完全删除了Assert陈述和内在表达 例如 以下内容只会在调试版本上打印 static v
  • 如何在 Silverstripe CMS 中使用 JavaScript?

    我正在使用 SilverStripe 3 0 CMS 并且我需要将 Google 地图包含到 CMS 中 我正在跟进这一步 http www silverstripe org general questions show 14596 pos
  • 有没有一种方法可以通过对一列求和并基于另一列来提取数据

    我正在尝试按帐户按月汇总金额 并将结果按帐户显示在另一个单元格中 AND E1 gt MONTH E1 E8 SUMPRODUCT F 1 F 8 gt MONTH E1 E8 6 D 1 F 8 D1 gt 0 6 Account Amo
  • 在python中访问超级(父)类变量

    我是Python新手 我尝试使用 super 方法访问子类中的父类变量 但它抛出错误 无参数 使用类名访问类变量是可行的 但我想知道是否可以使用 super 方法访问它们 class Parent object props a str a
  • 如何在 EF Core 3 中启用日志记录?

    我正在使用 Entity Framework Core 3 Preview 5 和 ASP NET Core 3 Preview 5 在 Visual Studio 2019 的调试输出窗口中 我没有从 EF Core 获取任何日志 我阅读
  • Azure DevOps/VSTS Build - 在 BUILD BUILDNUMBER 中找不到版本号数据

    设置一个简单的类库来构建并发布到 VSTS 自己的源时 我在 NuGet 包运行时看到此错误 在 BUILD BUILDNUMBER 中找不到版本号数据 我勾选了 使用版本号来版本包 选项 预计 VSTS 能够正常工作 使用内部版本号来版本
  • PHP 准备语句转义的清晰性

    我知道这是一个非常受欢迎的问题 并且已经研究了很多小时 我仍然对明确的答案有点不确定 我不是 PHP 专业人士 并且已经自学了一段时间 我最近刚刚了解 MYSQLi 准备好的语句 已经习惯了旧的做法 我的主要问题是试图找到关于在使用准备好的
  • 连接两列之间的排列

    我需要有关 Excel 作业的帮助 Name City John London Maxx NY Ashley DC Paris 解决这个问题的方法必须是 John london John NY John DC John Paris Maxx
  • 内置魔术变量名称/属性

    背景 对于不熟悉的人来说 崇高的文字 http sublimetext com 和 TextMate 通过以下定义的范围提供语法突出显示和其他功能 tmLanguage语言定义文件 基本上是一堆正则表达式 用于识别给定语言中的各种构造 例如