Python类方法未返回字典却返回实例的问题咨询
问题原因及解决办法
嘿,这个问题我刚学Python的时候也踩过一模一样的坑!你看到的那个<bound method...>输出,本质原因是你把login_headers定义成了类里的方法,但调用的时候没加括号,所以拿到的是方法本身,不是方法执行后返回的字典。
我给你分两种场景说解决方案:
场景1:login_headers是固定不变的字典
如果这个字典是固定值,不需要动态生成,那你应该把它定义成实例属性,放在__init__方法里:
# headers.py 中的代码 class Headers: def __init__(self): # 直接把 login_headers 设为实例属性 self.login_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...", "Cookie": "your_login_cookie_here" }
这样在主文件里调用headers.login_headers就能直接拿到目标字典了。
场景2:login_headers需要动态生成字典
如果这个字典每次调用都要生成新的(比如要根据当前时间、用户状态变化),那它确实是个方法,但你调用的时候必须加括号:
# headers.py 中的代码 import time class Headers: def login_headers(self): # 这里写动态生成字典的逻辑,比如加时间戳 timestamp = str(int(time.time())) return { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...", "X-Request-Timestamp": timestamp }
然后主文件里要这么调用:
from headers import Headers headers = Headers() # 必须加括号,执行方法才能拿到返回的字典 login_dict = headers.login_headers()
最后补个小知识点:在Python中,当你只写方法名(不加括号)时,你获取的是这个方法的绑定方法对象——它只代表这个方法属于哪个实例,但并没有执行它。只有加上括号,才会触发方法执行并返回它的return值。
内容的提问来源于stack exchange,提问作者supersize
相关产品推荐
相关产品推荐

