python - 类图(面向对象编程)
问题描述
我有这个程序。
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 类中的任何内容,我不知道如何做到这一点。
解决方案
我假设您只允许在类声明之外更改代码。
根据您想要实现的目标,您可以通过多种方式获得该输出。
您可以在第一个循环中枚举火箭并直接分配给高度:
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
.
推荐阅读
- html - Mechanical Turk 无法解析 HTML5 - 如何最好地检查它?
- r - dplyr() 中的非标准评估和 quasiquotation 未按(天真)预期工作
- ruby-on-rails - 在 Jenkinsfile 中运行 ruby on rails 脚本
- scala - Using sortBy on multiple elements in a List of Nested Tuples in Scala
- firebase - 如果 Firestore StreamBuilder 放在 CustomScrollView 中,为什么它会在向上滚动时跳过?
- python - Tornado server on Heroku. Error R10 (Boot Timeout)
- sql - SUM 函数 SQL Server
- sql-server - Set Variable for Select Result in SQL Server
- windows - 在 BAT 文件中,按修改时间比较文件:“if file1 is-older-than file2 do”?
- python-3.x - 我的简单损失函数导致 NAN