одинаковый результат random.randrange в конструкторе класса
Есть код. Он создает несколько классов. атрибут класса b создается случайно. Но во всех классах, которые создаются за время работы программы значения атрибутов одинаковы. Почему?
from random import randrange
from time import sleep
class A:
def __init__(self, b=randrange(0, 10)):
self.b = b
if __name__ == '__main__':
for i in range(5):
a = A()
print(a.b)
sleep(1)
Я сначала думал, что результат randrange зависит от времени, но даже если добавить задержку, ничего не поменяется.
Ответы (2 шт):
Автор решения: dIm0n
→ Ссылка
Значение дефолтного параметра вычисляется 1 раз. Попробуйте так:
from random import randrange
from time import sleep
class A:
def __init__(self):
self.b = randrange(0, 10)
if __name__ == '__main__':
for i in range(5):
a = A()
print(a.b)
sleep(1)
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
from random import randrange
#from time import sleep
class A:
def __init__(self, b=777):
self.b = b
if __name__ == '__main__':
for i in range(5):
a = A(randrange(0, 10)) # <---
print(a.b)
#sleep(1)