问题标签 [repr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
480 浏览

python - 基于类的装饰器和 repr() 守恒

我试图让我的基于类的装饰器保持repr()原始包装函数的行为(以匹配functools.wraps装饰器在函数上的工作方式)。我正在使用 python 3.3。

首先我尝试了functools:

但是当我调用repr()装饰函数时,我得到:

很好,所以我尝试自定义__repr__我的装饰器的方法,它应该由repr().

再次使用 functools:

不会改变输出,但会发生一些有趣的事情:

显式设置__repr__装饰器实例的方法具有相同的效果。

经过多一点测试,我推断出repr(instance)实际调用instance.__class__.__repr__(instance)。因此,实例的覆盖__repr__方法永远不会被调用。


所以这是我的问题:

  • 为什么repr(instance)调用instance.__class__.__repr__(instance)而不是instance.__repr__()?还是我错过了其他东西?
  • 您将如何将functools.wraps基于函数的装饰器完全复制到基于类的装饰器(包括更改repr()对装饰函数的调用结果)?
0 投票
4 回答
1242 浏览

python - 对自身内部列表的递归引用

所以我在python中遇到了一些非常奇怪的东西。我尝试将对列表的引用添加到自身。该代码可能有助于证明我所说的比我能表达的更好。我正在使用 IDLE 编辑器(交互模式)。

到目前为止,输出符合预期。但是当我这样做时。

在我看来,输出应该是

但它是

显然,它不是创建列表的副本,而是在 y 中放置对列表的引用。

y[0] 是 l返回 True。我似乎找不到一个很好的解释。有任何想法吗?

0 投票
2 回答
2376 浏览

python - 如何在 Python 中从字符串创建实例的对象

我正在使用 Python 2.5 在 Maya 中工作,编写动态热键管理器类并在尝试分配特定于实例的命令时遇到了麻烦,因为 nameCommands 在 mel 中表示为字符串。我最终得到如下命令:

我已经看到了很多关于 repr 和 eval 的主题,但是我下面的测试示例失败了。

我假设我想要的是某种从字符串中获取该实例的正确对象的方法。如果我知道它的样子,我可以将字符串格式化为可评估的命令。 有关更多使用信息,请参阅我的 cgtalk 帖子

SO 相关主题:

这个说这是不可能的,但用户也想要一个用例,我希望我已经提供了。 如何从字符串中获取对象?

其他: repr的输出什么时候有用? 如何使用 print() 打印一个类或类的对象? 允许我的类实例的 repr() 由 eval() 解析 __repr__ 在 python 中的主要目的 如何在覆盖 python 中的 __str__ 方法后获取实例的地址 Python repr 类 如何使用'pickle'

0 投票
1 回答
1549 浏览

python - 卡在 __repr__ 函数中,无法按我的理解工作

我有一个代码,它创建一个带有节点的图形,并跟踪边缘。这段代码本身似乎工作正常,但是在阅读了一些str vs reporepr () 返回的非字符串线程之后,我无法让repr覆盖按我的预期工作,我似乎无法隔离我的麻烦的原因。

我的理解是,只要字符串处理程序调用repr的函数,它就会返回一个字符串。更具体地说,它以字符串的形式引用和实例,查找strstr指向repr并作为字符串返回给它的调用方法。因此,对于我的程序,我有一个图表,它创建得很好,但是当我打印它时,它卡住了连接它加入的列表,将它作为 int 而不是字符串返回?

我尝试将不同的部分转换为字符串,认为可能没有调用repr,因为它必须明确地转换为字符串才能正常工作以及其他一些事情。我的故事的简短之处是我的repr没有被 "\n".join() 正确处理,并且以某种方式从 获取 int 值",".join(str(n) for n in self.out),告诉我它不能连接 str 和 int。

我真的很茫然,我已经阅读了许多关于使用 repr 的谷歌答案和文本,以及这里的许多答案,但还没有弄清楚我在这里究竟忽略了什么。

这是图本身的构建方式,它在 stagetext 中读取,其中第一行是节点名称,出口以 > 开头,中间的所有内容都是对节点位置的描述。

该图是我应该编辑的,它应该只是用 打印,尽管我已经看到了reprprint graph("mystageText.txt")大多数用法。因此,我对此事感到非常困惑,因为似乎没有带有实例列表的repr的清晰简洁示例。repr(graph("myStageText.txt")

提前感谢您的帮助,希望这对于 StackOverflow 来说足够简洁。抱歉,当我试图彻底解决我的问题时,我有点太罗嗦了。

0 投票
0 回答
102 浏览

python - Python - repr() 的描述

我已经阅读了文档repr()但我觉得它可能比文档所认为的更有用。如果我的推测感觉是正确的,那么是否有人能够提供repr()自己的实例。

0 投票
1 回答
885 浏览

python - python:使用 __repr__ 进行无法解释的无限递归

这是一段代码,它进入了一个无限递归循环,它只由__repr__函数组成,似乎在调用自己。但我真的看不出来,它是如何称呼自己的。此外,我什至无法理解,它是如何被调用的:

执行此代码会导致:

你明白吗,如何str(mylist.index(mydict))设法打电话__repr__?我完全不解。谢谢!

0 投票
1 回答
550 浏览

python - 无法从 python 类返回字符串

我正在尝试学习如何在 python 中正确使用类,我对它很陌生,但我无法让这个类返回所有值的字符串输出。理想情况下,我希望能够将 str(packet) 插入网络套接字。

此代码根本不输出任何内容。repr()我猜它的输出<__main__.ARP instance at 0x2844ea8>是什么意思?

0 投票
2 回答
25468 浏览

python - 为什么反斜杠出现两次?

当我创建一个包含反斜杠的字符串时,它们会被重复:

为什么?

0 投票
3 回答
223 浏览

python - 使用 __repr__() 访问类变量

我对 Python 比较陌生,我想知道如何“配置”一个类,使其在打印时返回一个元组。

示例:我有一个具有属性 a、b 和 c 的类:

现在我如何“配置”类,我可以通过以下方式访问这些属性:

我知道__repr__()and __str__(),但是如果我尝试通过“[]”访问数字,则会出现以下错误:

我知道这是有可能的,例如pygame库有一个名为的对象Rect,它的工作方式与上述方式完全相同。

谢谢!

0 投票
2 回答
3340 浏览

python - Python更改repr浮动数字

好的,我想使用 repr() 打印出一堆列表和嵌套数组的文本版本。

但我希望这些数字只有 4 位小数,而不是:42.7635745114 而是 32.7635。

我想使用 repr() 因为它有很好的处理嵌套数组的能力。编写我自己的打印循环是一个没有吸引力的选择。

当然有一些方法可以让 repr 超载来做到这一点?我看到有一个 repr 和 reprlib 模块,但例子真的很少,就像不存在一样。