来自variab的类

2024-04-23 23:39:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类,试图根据传递给它的变量名实例化另一个类。它抱怨“str”对象不可调用。正确的方法是什么?在

def MyClass:
    def __init__(self, otherName):
        self.other = otherName()

编辑:这是我的全部代码,有什么我应该做不同的吗?埃瓦尔在Python中是邪恶的吗?在

^{pr2}$

Tags: 对象实例方法代码self编辑initdef
3条回答

如果您真的希望将参数作为字符串传递,可以使用eval()。在

class MyClass: 
    def __init(self, otherName): 
        self.other = eval(otherName)()

您应该能够通过locals()函数返回的dict访问类。这是一个简单的课程

class ClassA:
    def __init__(self, word):
        self.word = word

    def __str__(self):
        return "Class A word is '%s'" % self.word

我可以从一个字符串中创建这个类,然后正常调用它

^{pr2}$

你完全可以不使用字符串来实现这一点。您可以在Python中按名称引用类,并像其他任何对象一样传递它们。因此,使用上面的MyClass定义,而不是:

c = Controller("Blog")

您可以简单地使用:

^{pr2}$

绝对不建议使用eval()来进行类似的操作。在

相关问题 更多 >