python类中方法相互调用_python 类中方法之间的调用

代码为《python从入门到实践》习题15-5的解答from random import choice

class RandomWalk():

"""一个生成随机漫步数据的类"""

def __init__(self, num_points=5000):

"""初始化随机漫步的属性"""

self.num_points = num_points

# 所有随机漫步都始于(0,0)

self.x_values = [0]

self.y_values = [0]

self.direction = None # 当此行消失时,代码仍有效

self.distance = None # 当此行消失时,代码仍有效

def get_step(self):

self.direction = choice([1, -1])

self.distance = choice([0, 1, 2, 3, 4])

return self.direction*self.distance

def fill_walk(self):

"""计算随机漫步包含的所有点"""

# 不断漫步,直到列表到达指定的长度

while len(self.x_values) < self.num_points:

# 决定前进方向以及沿这个方向移动的距离

x_step = self.get_step() # 这里一定要加上self. 不然会报错

y_step = self.get_step()

# 拒绝原地踏步

if x_step == 0 and y_step == 0:

continue

# 计算下一个点的x和y值

next_x = self.x_values[-1] + x_step

next_y = self.y_values[-1] + y_step

self.x_values.append(next_x)

self.y_values.append(next_y)

以上代码,相当于对下面代码的重构:from random import choice

class RandomWalk():

"""一个生成随机漫步数据的类"""

def __init__(self, num_points=5000):

"""初始化随机漫步的属性"""

self.num_points = num_points

# 所有随机漫步都始于(0,0)

self.x_values = [0]

self.y_values = [0]

def fill_walk(self):

"""计算随机漫步包含的所有点"""

# 不断漫步,直到列表到达指定的长度

while len(self.x_values) < self.num_points:

# 决定前进方向以及沿这个方向移动的距离

x_direction = choice([1, -1])

x_distance = choice([0, 1, 2, 3, 4])

x_step = x_direction*x_distance

y_direction = choice([1, -1])

y_distance = choice([0, 1, 2, 3, 4])

y_step = y_direction * y_distance

# 拒绝原地踏步

if x_step == 0 and y_step == 0:

continue

# 计算下一个点的x和y值

next_x = self.x_values[-1] + x_step

next_y = self.y_values[-1] + y_step

self.x_values.append(next_x)

self.y_values.append(next_y)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值