create an instance of one class from another class

不羁的心 提交于 2019-12-13 23:12:27

问题


I created browserView class named as "bdrMenuView" . It should be like "class bdrMenuView(BrowserView):" . and the class contains the method named as "createPictMenu" . The whole class should be

    class bdrMenuView(BrowserView):
              def createPictMenu(self):

Now i have written one more class named as LogoViewlet . It should be like "class LogoViewlet(ViewletBase):" . and the class contains the method named as "update" . The whole class should be

    class LogoViewlet(ViewletBase):
              def update(self):

Now i want to call the method of browserView class from another class. I created an instance of one class like

    class LogoViewlet(ViewletBase):
              def update(self):
                   a = bdrMenuView(self,BrowserView)      ---------> instance of BrowserView class
                   logoName = a.createPictMenu() 

I want to know whether it is correct or not which i created.


回答1:


No, that is not correct and makes absolutely no sense. Why do you pass in the baseclass as a parameter? Please learn basic Python.

The parameters to views are the context and the request. The best way to make a view from inside another view (which a viewlet is) is to traverse to it. You can do this with restrictedTraverse.

The exact code depends on what your view is registered for. For example, if the view you want to look up is called @@bdrmenu and registered for any content, you would look it up with self.context.restrictedTraverse('@@bdrmenu').



来源:https://stackoverflow.com/questions/17939512/create-an-instance-of-one-class-from-another-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!