【发布时间】:2015-08-08 23:07:39
【问题描述】:
这是简单的 Python 代码:案例 1 和案例 2 之间有什么区别——为什么我在第一种情况下得到的结果为 False 而在其他情况下为 True?为什么在案例 2 中 ids 相等? dir(object) 是否也在内部调用 object._dir__()?如果是这样,两个调用的返回对象/结果应该是相同的。
class Hello:
def __init__(self):
self.a1 = "a1"
hello = Hello()
print(hello)
# Case 1
var1 = dir(hello)
var2 = hello.__dir__()
print(id(var1), id(var2), id(var1) == id(var2))
# Case 2
print(id(dir(hello)), id(hello.__dir__()), id(dir(hello)) == id(hello.__dir__()))
print(dir(hello) == hello.__dir__())
输出
<__main__.Hello object at 0x7f320828c320>
139852862206472 139852862013960 False
139852862014024 139852862014024 True
False
【问题讨论】:
-
如果您认为您的问题不是重复的,请添加注释来解释原因。如果答案(原始问题或这个问题)没有涵盖您想知道的所有内容,请添加评论。只是反复编辑您的问题,并希望我们会注意到这些更改只有在您对时机非常幸运时才有效。
-
@abarnert,我对 stackoverflow 很陌生。下次我会做的,谢谢你告诉我。
-
没问题。我什么也没说,只是在我即将关闭页面时碰巧注意到您的一个编辑,并通过编辑我的答案来回答它,我不想给人一种错误的印象,即您可以每天都指望这种时机。