下面是简单的Python代码,Case 1和Case 2之间有什么区别,为什么我在第一种情况下得到的结果为False,在其他情况下为True。在案例2中为什么id是相等的?dir(object)在内部调用object._dir __()吗?如果是这样,两个调用的返回对象/结果应该是相同的。Python dir(object)vs 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
@abarnert,我很新的stackoverflow。我会在下一次做,谢谢你让我知道。 – ravi
没问题。我什么都没说,只是在我正要关闭页面时偶然注意到其中一个编辑,并通过编辑我的答案来回答它,并且我不想给出错误的印象,即您可以依靠每天的这种时机。 – abarnert