试图理解类和对象是如何相互作用的python

2024-04-26 21:01:33 发布

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

我正在学习“Python Programming in Context”中的示例。在

我正在学习有关类的部分,我们正在构建一个太阳系,我不清楚代码的某一部分。在

class SolarSystem:

    def __init__(self, asun):
        self.thesun = asun
        self.planets = []

    def add_planet(self, aplanet):
        self.planets.append(aplanet)

    def show_planets(self):
        for aplanet in self.planets:
            print(aplanet)

    def num_planets(self):
        return len(self.planets)

我不太确定add_planet和{}方法是如何工作的。在外壳中,我用“行星”类创建了一些行星。planet类的参数不仅仅是名称。它还包括名称、半径、质量、与太阳的距离和月亮的数量。当我把一个行星对象传递给SolarSystem类时自我行星列表包含所有传递给行星物体的参数?如果是这样,show_planet方法如何知道打印出行星的名字?我想我可能漏掉了一些关键的东西,其中一个问题是添加一个方法来总结太阳系的总质量。但我不知道如何从Planets类访问mass的实例变量,以便在SolarSystem类中求和。在

我在github上托管了一个存储库,因为有多个文件,我不想把它们都粘贴在这里。solarsystem这样你就能明白我在说什么了。在

我希望这是有意义的,如果你不清楚什么就问问。 谢谢

我增加了总质量法

^{pr2}$

它没用,我也不知道为什么。在

我明白了! 最后一行应该是:

total_mass = total_mass + aplanet.get_mass()

Tags: 方法inselfadddefshow质量行星
1条回答
网友
1楼 · 发布于 2024-04-26 21:01:33

self.planets包含所有Planet对象,除了name之外,这些对象确实包含mass等。它打印行星名称的原因是print,为了打印某些内容,首先需要将对象转换为字符串。它可以通过将对象传递给str函数来实现这一点。str函数通过调用对象上的__str__来转换它。如果你看一下Planet的定义,__str__会返回行星的名称,因此当行星被打印时,它的名称也会被打印出来。在

相关问题 更多 >