python 类方法如何实现递归调用_在Python类方法中使用递归

NB Noob警报……!

我试图在Python类方法中使用递归,但结果有限.

我正在尝试建立一个具有非常基本属性的汽车类:id,单车道道路中的位置(由整数表示)和速度.我所拥有的其中一个功能是用来返回这个车辆ID在前面的那个 – 即如果我们有班级:

class Car:

def __init__(self, position, id, velocity):

self.position = position

self.id = id

self.velocity = velocity

现在,我想出了以下类方法(代码下面的其他详细信息):

def findSuccessorCar(self, cars):

successorCar = ""

smallestGapFound = 20000000

for car in cars:

if car.id == self.id: continue

currentGap = self.calculateGap(car)

if (currentGap > -1) and (currentGap < smallestGapFound):

smallestGapFound = currentGap

successorCar = car

if successorCar == "":

return 1 # calling code checks for 1 as an error code

else:

return successorCar

计划是创建汽车对象,然后将它们存储在列表中.每次调用findSuccessorMethod时,都会将此全局汽车列表传递给它,例如

c1 = testCar.Car(4, 5, 1) # position, pos_y, Vel, ID

c2 = testCar.Car(7, 9, 2)

c3 = testCar.Car(9, 1, 2)

cars = [c1, c2, c3]

c1_succ = c1.findSuccessorCar(cars)

这很好用:找到后继车功能会说车c2在车c1前面(位置4前面的位置7).

但是,我希望汽车c1能够确定汽车在其直接继承者面前是什么 – 也就是说,哪辆车在前面的汽车前面,在这种情况下是汽车c3.我的想法是,如果我做c1_succ.findSuccessorCars(汽车),那么这应该工作正常:做类型(c1_succ)显示它是一个实例和hasattr显示它具有预期的对象属性.

但是,当我尝试执行c1_succ.findSuccessorCars(cars)时,会返回一个整数.因此,我很困惑 – 为什么这不起作用?为什么不能以这种方式递归执行类方法?这个整数来自哪里?

NB Gut觉得这与自我声明有关,而且我需要修改我的代码,以及全球汽车列表,需要有他们当前位置的全球列表,或其他类方法,例如

findSuccessorsSuccessor(是的,完全了解crummy的命名!).但是,我有兴趣理解为什么这种递归方法不起作用.

UPDATE

这是计算2辆车之间差距的要求代码 – 我很欣赏它是非常基本的,所以请不要在后面笑太多.

def calculateGap(self, car):

''' Calculate the gap between two cars

'''

thisCar = self

otherCar = car

gap = otherCar.position_x - thisCar.position_x

return gap

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值