I'm trying to print numbers within a method in a class. There is a function get_numbers()
responsible to generate numbers should always be outside of the class.
If I try like this, the get_result
method keep on printing numbers:
import time
import random
def get_numbers():
numbers = [i for i in range(10)]
return numbers
numbers = get_numbers()
random.shuffle(numbers)
class NumChecker:
def get_result(self):
print(numbers.pop())
time.sleep(2)
parse = NumChecker()
while True:
parse.get_result()
However, when I try like the following, the script throws this error UnboundLocalError: local variable 'numbers' referenced before assignment
pointing at if len(numbers)<=5
whereas I didn't get any error when I used this print(numbers.pop())
above:
def get_result(self):
if len(numbers)<=5:
print("updating numbers")
numbers = get_numbers()
random.shuffle(numbers)
else:
print(numbers.pop())
time.sleep(2)
Is it necessary to use global numbers
within get_result()
to avoid such error?