Python自定义类无法初始化volume属性 分离请求解析功能实现问题
修正后的可运行代码
import requests from bs4 import BeautifulSoup from pprint import pp import datetime import time class Data: def __init__(self): # 初始化时volume属性默认设为None,后续请求解析后再赋值 self.volume = None def responce(self): # 独立的网络请求逻辑 r = requests.get('https://robinhood.com/stocks/WISH') # 独立的页面解析逻辑 soup = BeautifulSoup(r.content, 'lxml') semigoal = [x.text for x in soup.select('span.css-ktio0g')] # 简化原有的冗余字符串处理 volume = semigoal[11][:-1] print(volume) # 给实例属性volume赋值 self.volume = volume if __name__ == "__main__": d = Data() d.responce() # 可直接访问实例的volume属性获取解析结果 print(f"实例volume属性值为:{d.volume}")
核心调整点
- 优化构造方法:删除了
__init__的强制volume入参,初始化时将volume属性设为默认值None,符合「先完成类初始化、后续通过请求给属性赋值」的需求,也解决了原代码d = Data()调用时缺少参数的报错问题 - 修正属性赋值错误:原代码
self.volume(self,volume)误将实例属性当作可调用方法,直接通过self.volume = volume即可完成属性赋值 - 简化解析逻辑:原代码多次循环拆分、拼接字符串的操作完全可以通过字符串切片
semigoal[11][:-1]一步实现,代码更简洁高效 - 补充入口判断:增加
if __name__ == "__main__"的运行入口判断,避免模块被导入时意外执行请求逻辑
内容的提问来源于stack exchange,提问作者fletcher.l.collins
相关产品推荐
相关产品推荐

