Python 在类中添加具有相同名称的实例的所有变量

Python 在类中添加具有相同名称的实例的所有变量,python,python-3.x,oop,Python,Python 3.x,Oop,我有一个名为Robot的类,它创建了许多类Segment和Pointmass的实例。所有这些实例都有一个变量质量。如何获得具有相同变量名的对象内所有对象的总质量mass 我现在做的是: class机器人: 定义初始(自、massJoint1、massJoint2、massJoint3、massSlide、reachSlide、massArm、lengthArm): self.joint1=点质量(massJoint1) self.joint2=点质量(massJoint2) self.joint

我有一个名为
Robot
的类,它创建了许多类
Segment
Pointmass
的实例。所有这些实例都有一个变量
质量
。如何获得具有相同变量名的对象内所有对象的总质量
mass

我现在做的是:

class机器人:
定义初始(自、massJoint1、massJoint2、massJoint3、massSlide、reachSlide、massArm、lengthArm):
self.joint1=点质量(massJoint1)
self.joint2=点质量(massJoint2)
self.joint3=点质量(massJoint3)
self.slide=slide(masslide,reachSlide)
self.arm=arm(massArm、lengthArm)
self.totalmass=self.joint1.mass+self.joint2.mass+self.joint3.mass+self.slide.mass+self.arm.mass
def打印变量(自身):
属性=变量(自身)
打印(',\n'.join(“%s:\t%s”%item for attrs.items()中的项)
打印()
类点质量:
定义初始(自身,质量):
自身质量=质量
self.location=None
班级部分:
定义初始(自身,质量):
自身质量=质量
self.start=None
self.end=None
其中

self.totalmass=self.joint1.mass+self.joint2.mass+self.joint3.mass+self.slide.mass+self.arm.mass

是一条很长的队伍,当
机器人
获得更多的手臂和关节时,真的很不方便。。。有更好的方法获得总质量吗?

不应该将关节存储在单独的属性中。相反,存储一个简单的
关节
列表;然后您可以简单地将
sum
与生成器表达式一起使用

self.totalmass = sum(j.mass for j in self.joints)

不应该将关节存储在单独的属性中。相反,存储一个简单的
关节
列表;然后您可以简单地将
sum
与生成器表达式一起使用

self.totalmass = sum(j.mass for j in self.joints)

使用一个列表,一个
用于
循环和
*args
?看起来像你的
joint1
joint2
joint3
应该在一个列表中。如果你的机器人长了太多的肢体,这表明你应该将它们存储在一个列表中。使用一个列表,循环的
*args
?看起来像是你的
joint1
joint2
joint3
应该在一个列表中。如果你的机器人长了太多的肢体,这表明你应该将它们存储在一个列表中。但是在这种情况下,我必须记住哪个关节在列表的哪个索引中?我宁愿给它们唯一的名称,也许我不应该在示例中使用
jointx
。在这种情况下,您可以使用dict并遍历
self.joints.values()
;或者,如果必须的话,将它们作为单独的属性保留,但通过
[self.joint1,self.joint2]
等进行迭代。但是在这种情况下,我必须记住哪个关节在列表的哪个索引中?我宁愿给它们唯一的名称,也许我不应该在示例中使用
jointx
。在这种情况下,您可以使用dict并遍历
self.joints.values()
;或者,如果必须的话,将它们作为单独的属性保留,但要遍历
[self.joint1,self.joint2]
等。