Python 将字符串转换为getattr的对象

Python 将字符串转换为getattr的对象,python,getattr,Python,Getattr,我正在学习Python和海龟图形 我需要的是使用用户和操作给定的名称调用一个移动 到目前为止,我一直在尝试使用: def mov(): selection = <name of the turtle> action = <forward, backward, etc> value = <number of steps/angle> function = getattr(selection, action) function(

我正在学习Python和海龟图形

我需要的是使用用户和操作给定的名称调用一个移动 到目前为止,我一直在尝试使用:

def mov():


   selection = <name of the turtle>
   action = <forward, backward, etc>
   value = <number of steps/angle>

   function = getattr(selection, action)
   function(value)
def mov():
选择=
行动=
值=
函数=getattr(选择、操作)
函数(值)
问题是“简单”检测,“选择”是字符串而不是对象。 如何将“selection”中的字符串转换为另一个对getattr有效的东西

另一个选项(我不知道是否可能)是在执行之前替换变量(如bash中的“cmd”)


PS:没有创建任何类(我不知道没有提供时是否有默认类)

快速查看此处和此处的一些文档

导入海龟
鲍勃=乌龟。乌龟()#创造一只乌龟
def mov(选择、操作、值):
返回getattr(选择、操作)(值)
mov(鲍勃,“前进”,100)
#或者如果您需要使用字符串来访问bob
mov(globals().get(“bob”,海龟),“forward”,100)
还有积分奖励。。。如果你有很多海龟:

导入海龟
随机输入
turtles=[turtle.turtle()表示范围(10)]
def mov(选择、操作、值):
返回getattr(选择、操作)(值)
位置=[“右”、“左”、“前”]
对于范围内的uu(100):
对于海龟中的t:
#随机移动你所有的海龟
mov(t,随机。选择(位置),随机。选择(范围(356))

祝你学习顺利:)

因此,
getattr
从对象获取属性

如果action=“go”,那么
getattr(selection,action)
基本上就是在做
selection.go
。在您的代码示例中,选择只是海龟的名字,而不是海龟的名字。。。您正在执行
string.go()
,这不是一件事

为了获得想要使用的模式,必须有一个定义了所有移动方法的对象。让我开始吧-

class MyTurtle:
  def north(self, distance):
    # do something
  def south(self, distance):
    # do something else

turtle = MyTurtle()
method = getattr(turtle, action)
method(distance)
注 很可能您只是想在turtle框架中挂接现有的方法,我尝试了更通用的方法,但意识到这可能更有用-如果是这样的话,请确保您在turtle对象上调用getattr,而不是它的名称