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

2024-06-24 13:43:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为Robot的类,它创建了许多类SegmentPointmass的实例。所有这些实例都有一个变量mass。如何获得具有相同变量名mass的对象中所有对象的总质量?你知道吗

我现在做的是:

class Robot:
    def __init__(self, massJoint1, massJoint2, massJoint3, massSlide, reachSlide, massArm, lengthArm):
        self.joint1 = Pointmass(massJoint1)
        self.joint2 = Pointmass(massJoint2)
        self.joint3 = Pointmass(massJoint3)

        self.slide = Slide(massSlide, reachSlide)
        self.arm = Arm(massArm, lengthArm)

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

    def printVars(self):
        attrs = vars(self)
        print(', \n'.join("%s: \t%s" % item for item in attrs.items()))
        print()


class Pointmass:
    def __init__(self, mass):
        self.mass = mass

        self.location = None


class Segment:
    def __init__(self, mass):
        self.mass = mass

        self.start = None
        self.end = None

其中

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

是一条很长的线,而且当Robot获得更多的手臂和关节时真的很不方便。。。有没有更好的方法来获得总质量?你知道吗


Tags: 实例selfnoneinitdefsegmentrobotmass
1条回答
网友
1楼 · 发布于 2024-06-24 13:43:44

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

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

相关问题 更多 >