我不明白为什么它有两个不同的结果。请帮助我解释这些结果。
这是我的代码:
# coding: iso-8859-2
class Satelite:
def __init__(self, name, mass=100, speed=0):
self.name, self.mass, self.speed= name, mass, speed
def lokes(self, power, time):
self.speed=self.speed+ power*time/ self.mass
def energy(self):
return self.mass* self.speed**2/2
def out_speed(self):
print "%s Satelites's speed = %s m/s" %(self.name, self.speed)
# Tesztprogram:
s1=Muhold('Zoe', mass=250, speed=10)
s1.lokes(500,15)
s1.out_speed()
print s1.energy()
s1.lokes(500,15)
s1.out_speed()
print s1.energy()
结果如下:
Zoe Satelite speed= 40 m/s
200000
Zoe Satelite speed= 70 m/s
612500
答案 0 :(得分:4)
lokes()
方法会改变对象,这意味着每次不都有相同的输入。
答案 1 :(得分:3)
那是因为你正在修改中间的状态变量。
def lokes(self, power, time):
# this reassigns speed, so next time the function is called,
# it will be higher.
self.speed=self.speed+ power*time/ self.mass
由于speed
已更改且energy
方法取决于speed
,因此每次调用除{{1}以外的值的lokes时,energy
的输出都应更改1}}。
答案 2 :(得分:1)
您收到的结果不同,因为您在self.speed
s1.lokes(500,15)
def lokes(self, power, time):
self.speed=self.speed+ power*time/ self.mass
由于lokes
的执行会修改并使用self.speed
,否则会影响以后的通话,除非您手动设置self.speed
或重置卫星。