如何在python中使用一种方法用于各种相同类型的对象?

时间:2013-11-23 21:21:29

标签: python object python-3.x

例如,我有很多海龟,我希望它们都向前移动。我应该为每只乌龟重复我的前进命令还是有一种Pythonic方式?

import turtle
tx=turtle.Turtle()
ty=turtle.Turtle()
tz=turtle.Turtle()
ti=turtle.Turtle()
tj=turtle.Turtle()
tx.fd()
ty.fd()
tz.fd()
ti.fd()
tj.fd()

是否有map等函数使用fd()方法然后编写我的对象名称?我知道最好使用列表和map函数,但我想命名我的对象。

2 个答案:

答案 0 :(得分:4)

turtles = [tx, ty, tz, ti, tj]
for turtle in turtles:
    turtle.fd()

我仍然建议不要给他们自己的变量,但这是你的电话。此外,map对于您想要执行副作用的函数不是一个好主意;如果你不以某种方式迭代整个地图对象,那么函数就不会被调用你希望它被调用的所有东西。

答案 1 :(得分:0)

您可以使用字典命名并在值上使用循环:

import turtule
t_names = ['tx', 'ty', 'tz', 'ti', 'tj']
t = dict([(name, turtle.Turtle()) for name in t_names])
[one_t.fd() for one_t in t.values()]

并按名称使用它们:

t['tz'].bw()