下面是簡單的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