这可以在python中创建子方法吗?
我想写一个方法来解析一个带有请求库的站点,该方法应该包含一部分包含base_url的url,并在此基础上执行get请求,主要问题是我不知道如何使其更好 我现在想的是:这可以在python中创建子方法吗?,python,class,methods,python-requests,Python,Class,Methods,Python Requests,我想写一个方法来解析一个带有请求库的站点,该方法应该包含一部分包含base_url的url,并在此基础上执行get请求,主要问题是我不知道如何使其更好 我现在想的是: import requests class Response: # ... def site_parser(self, atom): base_url="https://example.com/" def category1(self): return requests.get(base_
import requests
class Response:
# ...
def site_parser(self, atom):
base_url="https://example.com/"
def category1(self):
return requests.get(base_url + category1/ + atom).text
def category2(self):
return requests.get(base_url + category2/ + atom).text
if __name == "__main__":
def main():
result = Response()
result.site_parser.category1("atom")
result.site_parser.category2("atom")
因此,所需的数据具有相同的基本url,但要进入的目录不同,如果之后只调用了该方法,我需要生成每个目录。有没有办法做到这一点?我不想让基url成为全局变量,在我看来,您需要的是另一个类
class Response:
# ... Some dark magic here ...
def site_parser(self, atom):
return ResponseParser(self, atom)
class ResponseParser:
def __init__(self, res, atom):
self.atom = atom
self.res = res
self.base_url = "https://example.com/"
def category1(self):
# ... Do stuff ...
def category2(self):
# ... Do stuff ...
那你就把它叫做
result = Response()
result.site_parser("atom").category1()
如果您真的坚持要去掉site_解析器调用中的括号,那么可以将atom位移动到categoryN方法,并将site_解析器变成一个新的解析器,但在我看来,这可能更让人困惑
作为一名函数式程序员,我和其他人一样喜欢嵌套函数和闭包,但在我看来,基于您给出的有限示例,在这种情况下,使用第二个helper类可能是更具可读性的方法。您可以这样定义嵌套函数,但是你不能这样称呼它们。可以将category1定义为site_parser.category1在site_parser下,但我不认为这样做有什么好处。在这种情况下,site_解析器真的应该是一个类,不是吗?@tobias_k,但如果它们是以我写的方式声明的,那么这是否可能调用它们呢?