当python给我一个对象在内存中的位置时,除了区分交互式提示中的实例之外,还有什么呢?
例:
>>>inspect.walktree
<function walktree at 0x2a97410>
Run Code Online (Sandbox Code Playgroud)
如果您调用repr(obj)未定义魔术__repr__方法的对象(或者未覆盖object从新样式对象继承的默认实现),则返回此默认字符串表示形式.
该默认字符串的目的是为程序员提供有关底层对象的类型和标识的有用信息.
在内部,id调用该函数以获取字符串中包含的数字:
>>> o = object()
>>> o
<object object at 0x7fafd75d10a0>
>>> id(o)
140393209204896
>>> "%x" % id(o)
'7fafd75d10a0'
Run Code Online (Sandbox Code Playgroud)
请注意,id它不代表唯一ID.可能会发生这样的情况:在程序的生命周期中,几个对象将具有相同的ID(尽管从不在同一时间).它也不必与内存中对象的位置相关联(尽管它在CPython中也是如此).
您可以通过以下方式轻松覆盖您自己的类的表示字符串:
class MyClass(object):
def __repr__(self):
return "meaningful representation (or is it?)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2399 次 |
| 最近记录: |