好吧,行星只是字符串,所以你不能在它们上设置属性。此外,像费迪南德建议的那样动态创建大量全局变量很少是一个好主意,最好使用dict
.
基于费迪南德的回答,我建议将行星的名称作为一个属性(我想你会发现你会需要它)。现在,您可以将这些Planet
对象放在 adict
或 a中list
(以保留顺序),无论您当时的需要是什么,并且在任何一种情况下,所有相关信息都随时可用。
planet = ['merc','venus','earth','mars','jupiter','saturn','uranus','neptune']
planetv = [2, 3, 4, 5, 6, 7, 8, 9]
planetp = [10, 20, 30, 40, 50, 60, 70, 80]
class Planet(object):
def __init__(self, name, m, p):
self.name = name
self.m = m
self.p = p
planets = [Planet(name, m, p) for name, m, p in zip(planet, planetv, planetp)]
planet_dict = dict((p.name, p) for p in planets)
for p in planets:
print "{0}: {1} {2}".format(p.name, p.m, p.p)
print "Mass of earth: {0}".format(planet_dict["earth"].m)
编辑:忘记我之前的建议,我改变了主意。