Python 将字符串转换为getattr的对象
我正在学习Python和海龟图形 我需要的是使用用户和操作给定的名称调用一个移动 到目前为止,我一直在尝试使用: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(
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,而不是它的名称