Question at the end. In myClasses.py, I have class A with class variables. dist is hard coded. distPerc is calculated. I won't need instances of this class. Hence the usage of class variables.
#version1
import utils
class A:
dist = [10, 90, 0, 0, 0, 0]
distPerc = [utils.convert_to_percent(x, dist) for x in dist]
myTest.py contains:
import myClasses
a = myClasses.A
print(a.distPerc)
When I run it, I get
NameError: name 'dist' is not defined
If I change the class to
#version2
class A:
dist = [10, 90, 0, 0, 0, 0]
distPerc = []
for x in dist:
distPerc.append(utils.convert_to_percent(x, dist))
and run it, it works:
[0.1, 0.9, 0.0, 0.0, 0.0, 0.0]
utils.py contains:
def convert_to_percent(x: int, lv: list = None):
oo = 0
if lv is None:
oo = 10 ** (int(math.log10(x)) + 1)
if type(lv) == list:
oo = sum(lv)
return x / 10 ** int(math.log10(oo))
If I use any function in list comprehension in version1, even builtin, it throws a NameError.
Question: even though an alternative works; I'd like to learn, why would list comprehension fail in #version1?