【发布时间】:2015-01-29 04:57:56
【问题描述】:
似乎不可能使用字符串作为变量的名称。我基本上希望程序理解引号内的东西是我要引用的对象的名称。我想做这样的事情:
str = "modname"
import var(str)
var() 是一个虚构的函数。我以使用 str() 或 int() 的方式使用它。我想你可能会问“为什么?”这样我就可以做这样的事情了:
class player:
__init___():
attributes = [ "hp", "attack", "defense" ]
for x in range( 0, len(self.attributes) ]:
self.var(attributes[x]) = var( attributes[x] + "()" )
(假设您已经完成了类似from stats import * 的操作)。但真正的回报是能够做这样的事情:
for x in range( 0, len(self.attributes) ):
self.var(attributes[x]).modAttr(-5)
print self.var(attributes[x]).magnitude
这可能吗?想要这样做完全荒谬吗?还是有不同的、更规范的方式来执行这样的任务?
【问题讨论】:
-
我想这会有所帮助,但是当应该有办法说
take_off_the_quote_marks('hp')时,制作像attributes = { 'hp' : hp, 'attack' : attack }这样的字典不是很愚蠢吗? (我不认为这是重复的。) -
“这可能吗?” 是的,这就是
getattr和setattr的用途。 “想要这样做是不是完全荒谬?” 很难说;目前尚不清楚您到底要做什么。您的player.__init__包含NameError并且似乎正在尝试为属性分配对自己的调用。另外,为什么要麻烦索引x?for attr in attributes:更具可读性。 -
这是我一直在寻找的答案。我只是需要有人把我指向
getattr/setattr。谢谢。忽略我的代码质量,这只是一个草率的例子。 -
该代码应该从字符串列表中动态实例化模块。这很令人困惑,因为我在对象上为实例赋予了相同的名称。原来我的问题实际上是这个问题的副本:stackoverflow.com/questions/4821104/…
标签: python string python-2.7 import casting