【发布时间】:2011-06-16 04:37:48
【问题描述】:
***EDIT2: 抱歉代码有问题。这是说明相同问题的工作代码:
class bead():
def printmsg(a):
print('test message')
chain1=bead()
x='chain1'
eval(x + '.printmsg()')
***编辑:感谢您回答原始问题。这是我的问题的措辞更好的版本:
class bead():
def msg():
print('test message')
x='chain1'
y='bead1'
eval(x + '.' + y + '=bead()')
chain1.bead1.msg()
输出: '测试消息'
有什么更好的方法来做到这一点?
原问题:
脚本:
class testClass():
test1='test1 text'
x='testClass'
y='test1'
eval(x + '.' + y)
输出: 'test1 文本'
有更好的方法吗?
***编辑:getattr() 用于从类中提取信息。谢谢大佬。让我稍微改变一下问题:
我可以用什么来代替:
x='chain1' y='mol1'
【问题讨论】:
-
做什么?它真的没有任何用处。
-
我不明白 - 你的标题是“从变量名创建实例”,但看起来你正在尝试访问
testClass.test1。这不是testClass类的实例,您没有创建它。 -
我不明白编辑过的问题。
eval(x + '.' + y + '=bead()')不起作用。你不能在那里做任务。您是在寻求一种动态创建变量的方法,还是在询问有关该类的问题? -
是的。我正在尝试从字符串的变量动态创建一个类的实例。
-
@jHoro,你最好剪切和粘贴而不是输入你的问题。你的例子永远不会像输入的那样工作。