调用函数而不先创建类的实例
可能重复:
Python中的静态方法?
我认为我的问题非常简单,但要更清楚我只是想知道,我有这个:
class MyBrowser(QWebPage):
''' Settings for the browser.'''
def __init__(self):
QWebPage.__init__(self)
pass
def userAgentForUrl(self, url=None):
''' Returns a User Agent that will be seen by the website. '''
return "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15"
还有一些在不同的类中,即在同一个文件中,我想获得这个用户代理。
mb = MyBrowser()
user_agent = mb.userAgentForUrl()
print user_agent
我试图做这样的事情:
print MyBrowser.userAgentForUrl()
但得到这个错误:
TypeError: unbound method userAgentForUrl() must be called with MyBrowser instance as first argument (got nothing instead)
所以我希望你得到了我所要求的,有时我不想创建一个实例,并且从这种函数中检索数据。 所以问题是有可能做到,或者没有,如果是的话,请给我一些关于如何实现这个目标的方向。
这被称为静态方法:
class MyBrowser(QWebPage):
''' Settings for the browser.'''
def __init__(self):
QWebPage.__init__(self)
pass
@staticmethod
def userAgentForUrl(url=None):
''' Returns a User Agent that will be seen by the website. '''
return "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15"
print MyBrowser.userAgentForUrl()
当然,你不能在其中使用self
。
添加staticmethod
装饰器,并删除self
参数:
@staticmethod
def userAgentForUrl(url=None):
装饰器也会为你处理实例调用的情况,所以你实际上可以通过对象实例来调用这个方法,尽管这种做法通常是不鼓励的。 (静态调用静态方法,而不是通过实例。)
链接地址: http://www.djcxy.com/p/55131.html上一篇: Call function without creating an instance of class first