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)
您可以在不使用字符串的情况下执行此操作.您可以按名称引用Python中的类,并像其他任何对象一样传递它们.所以,使用你MyClass上面的定义,而不是做:
c = Controller("Blog")
Run Code Online (Sandbox Code Playgroud)
你可以简单地使用:
c = Controller(Blog)
Run Code Online (Sandbox Code Playgroud)
eval()绝对不建议使用这样的东西.