【发布时间】:2023-03-28 11:28:02
【问题描述】:
我在 Python (3.3.3) 中做一些事情,我遇到了一些让我感到困惑的事情,因为据我所知,类每次被调用时都会获得一个新的 id。
假设你在某个 .py 文件中有这个:
class someClass: pass
print(someClass())
print(someClass())
上面返回相同的 id,这让我感到困惑,因为我正在调用它,所以它不应该是相同的,对吧?当同一类连续调用两次时,Python 是这样工作的吗?当我等待几秒钟时,它会给出一个不同的 id,但如果我像上面的示例一样这样做,它似乎不会那样工作,这让我感到困惑。
>>> print(someClass());print(someClass())
<__main__.someClass object at 0x0000000002D96F98>
<__main__.someClass object at 0x0000000002D96F98>
它返回相同的东西,但为什么呢?例如,我也注意到它的范围
for i in range(10):
print(someClass())
当类被快速调用时,Python 这样做有什么特别的原因吗?我什至不知道 Python 做到了这一点,或者它可能是一个错误?如果它不是错误,有人可以向我解释如何修复它或方法,以便每次调用方法/类时生成不同的 id?我对它是如何做到的感到非常困惑,因为如果我等待,它确实会改变,但如果我尝试调用同一个类两次或更多次,它不会改变。
【问题讨论】:
标签: python class python-3.x