emu*_*emu 5 python repr self string-formatting
假设我想调试一个带有属性的简单类myattribute.我创建一个repr这样的方法:
class SimpleClass:
def __repr__(self):
return "{0.myattribute}".format(self)
Run Code Online (Sandbox Code Playgroud)
感觉有点多余,所以我更喜欢format直接使用:
class SimpleClass:
__repr__ = "{0.myattribute}".format
Run Code Online (Sandbox Code Playgroud)
......但是失败了IndexError: tuple index out of range.我理解它format不能访问self论点,但我不明白为什么.
我做错了什么,这是CPython限制 - 或者还有什么?
"{0.myattribute}".format已经是字符串对象 ( ) 上的绑定方法"{0.myattribute}"。因此,当调用代码尝试查找x.__repr__(例如,x实例在哪里SimpleClass)时,Python 会找到 的__repr__属性SimpleClass,但随后无法将其识别为SimpleClass方法 - 不遵守描述符协议(字符串方法没有__get__属性)。
看来在 3.4 中,使用 a lambdawill 可以工作,尽管我可以发誓它在以前的版本中必须是一个真正的函数。functools.partial不管用。但无论如何你确实应该使用真实的函数。抱歉,它没有您想要的那么干。
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |