Я делаю некоторые вещи в Python (3.3.3), и я столкнулся с чем-то, что сбивает меня с толку, так как мои понимающие классы получают новый идентификатор каждый раз, когда их вызывают.
Допустим, у вас есть это в каком-то .py файле:
class someClass: pass
print(someClass())
print(someClass())
Вышеприведенный код возвращает тот же идентификатор, который сбивает меня с толку, так как я звоню по нему, поэтому он не должен совпадать, верно? Так работает Python, когда один и тот же класс вызывается дважды подряд или нет? Он выдает другой идентификатор, когда я жду несколько секунд, но если я делаю это в то же время, как в примере выше, он, похоже, не работает таким образом, что меня смущает.
>>> print(someClass());print(someClass())
<__main__.someClass object at 0x0000000002D96F98>
<__main__.someClass object at 0x0000000002D96F98>
Он возвращает то же самое, но почему? Я также заметил это с диапазонами, например,
for i in range(10):
print(someClass())
Есть ли какая-то особая причина, по которой Python делает это, когда класс вызывается быстро? Я даже не знал, что это сделал Python, или это ошибка? Если это не ошибка, может кто-нибудь объяснить мне, как это исправить или метод, чтобы он генерировал новый идентификатор каждый раз, когда вызывается метод/класс? Я довольно озадачен тем, как это происходит, потому что если я подожду, все изменится, но не в том случае, если я попытаюсь вызвать один и тот же класс два или более раз.