首页 > 解决方案 > 类图(面向对象编程)

问题描述

我有这个程序。

class Rocket():
        def __init__(self, name) 
             self.name=name
             self.height=0
        def moveUp(self) 
             self.height+=1
myRockets=["One", "Two", "Three", "Four", "Five" ] 
fleetOfRockets=[]
for rocket in myRockets: 
 fleetOfRockets.append(Rocket(rocket))
for rocket in fleetOfRockets:
   print(rocket.name, rocket.height)

这个的输出是这样的;

One 0
Two 0
Three 0
Four 0
Five 0

我想要在这里做的是,我希望每枚火箭向上移动 10 倍。这就是我想要的输出。

One 10
Two 20
Three 30
Four 40
Five 50

如果不更改 Rocket 类中的任何内容,我不知道如何做到这一点。

标签: pythonloopsclassoop

解决方案


我假设您只允许在类声明之外更改代码。

根据您想要实现的目标,您可以通过多种方式获得该输出。

您可以在第一个循环中枚举火箭并直接分配给高度:

myRockets=["One", "Two", "Three", "Four", "Five" ] 
fleetOfRockets=[]

for i, rocket in enumerate(myRockets, 1):
    new_rocket = Rocket(rocket)
    new_rocket.height = i * 10
    fleetOfRockets.append(new_rocket)

您还可以创建一个内部循环来调用moveUp而不是直接设置height.


推荐阅读