来自变量的类

Jos*_*osh 2 python class object new-operator

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

def MyClass:
    def __init__(self, otherName):
        self.other = otherName()
Run Code Online (Sandbox Code Playgroud)

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

#!/usr/bin/python                                                                                                                                                                      

class Model:
    def get_post(self, id):
        # Would query database, perhaps                                                                                                                                                
        return {"title": "Python :: Test Page", "body": "Test page using Python!"}

class Controller:
    def __init__(self, viewName):
        self.model = Model()
        self.view = viewName()

    def main(self):
        post = self.model.get_post(1)
        self.view.display(post)

class View:
    def header(self, item):
        print "Content-type: text/html\r\n\r\n"
        print "<html>"
        print "<head>"
        print "<title>%(title)s</title>" % item
        print "</head>"
        print "<body>"

    def footer(self, item):
        print "</body>"
        print "</html>"

class Blog(View):
    def display(self,item):
 View.header(self,item)
 print "<p>%(body)s</p>" % item
 View.footer(self,item)

c = Controller(Blog)
c.main()
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 9

您可以在使用字符串的情况下执行此操作.您可以按名称引用Python中的类,并像其他任何对象一样传递它们.所以,使用你MyClass上面的定义,而不是做:

c = Controller("Blog")
Run Code Online (Sandbox Code Playgroud)

你可以简单地使用:

c = Controller(Blog)
Run Code Online (Sandbox Code Playgroud)

eval()绝对不建议使用这样的东西.