Python 创建包含类的变量的列表
我正在尝试从头开始创建自己的Nbody模拟。我创建了一个类(称为Body),其中包含计算其他实体的力并相应移动它的函数。 我创建了另一个类,称为System,它定义实体的数量,控制位置的更新,并更新系统的绘图。 如果我这样单独定义变量的数量,这两个类都可以正常工作:Python 创建包含类的变量的列表,python,python-2.7,class,Python,Python 2.7,Class,我正在尝试从头开始创建自己的Nbody模拟。我创建了一个类(称为Body),其中包含计算其他实体的力并相应移动它的函数。 我创建了另一个类,称为System,它定义实体的数量,控制位置的更新,并更新系统的绘图。 如果我这样单独定义变量的数量,这两个类都可以正常工作: d1 = Body(i) d2 = Body(i) .... 并将它们放入一个列表list=[d1,d2,…]。i是一个字符串(使用的名称) 此方法的问题是,执行n个单独的变量定义,然后将它们放入列表中是令人厌烦的。我尝试过执行循
d1 = Body(i)
d2 = Body(i)
....
并将它们放入一个列表list=[d1,d2,…]
。i是一个字符串(使用的名称)
此方法的问题是,执行n个单独的变量定义,然后将它们放入列表中是令人厌烦的。我尝试过执行循环:
self.liste = []
for i in range(n):
self.liste.append(Body(str(i)))
但这将返回一个包含非类型的列表([None,None,None,…]
)。
对于我的设置来说,重要的是我最终得到了一个n个不同类的列表(如果它们是由变量名定义的,这是可以的)。有人能帮我吗?以下内容适合我:
class Body:
bodies = []
def __init__(self, n):
self.n = n
def __str__(self):
return str(self.n)
for i in range(5):
Body.bodies.append(Body(i))
for body in Body.bodies:
print body
# This also works.
print body.n
请注意,如果您直接尝试打印一个类,您需要一个
\uuu str\uuuuuuuu
(或\uuuuu repr\uuuuuuu
)方法。这对我很有效。请尝试在每个步骤后添加打印语句。返回的(Er..Printed)值是否与您期望的值匹配?这是什么意思“返回一个包含非类型的列表”你在哪里返回任何内容?你的意思是说self.liste
最终是一个None
值的列表,而None
s的列表究竟来自哪里?当我打印self.liste时,它返回[None,None,None]根据您发布的代码,我看不出有任何理由认为这应该是一个问题。\uuuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
和/或\uuuuuuuuuuu repr\uuuuuuuuuuuuuuuuuuu
。