如何实现Automation实例链式调用ClickElement类的by_span_name方法
问题解决说明
首先明确:ClickElement不需要继承Automation类,实现你要的链式调用和PyCharm代码提示只需要将ClickElement实例设置为Automation类的实例成员即可。
实现步骤
- 正常定义你的ClickElement类,保留
by_span_name方法
class ClickElement: def by_span_name(self, name: str): # 你的业务逻辑实现 pass
- 在Automation类中声明
click_element属性,初始化时实例化ClickElement赋值给该属性,添加类型标注可以大幅提升PyCharm的识别准确性
class Automation: # 提前声明属性类型,可选但建议添加 click_element: ClickElement def __init__(self): self.click_element = ClickElement() # 其他Automation的初始化逻辑
- 实例化调用
Window = Automation() # 此时输入Window.后,PyCharm会正常弹出click_element的成员提示 Window.click_element.by_span_name("目标span文本")
可选:依赖注入写法
如果你的ClickElement实例需要提前做自定义配置,可以通过构造参数传入Automation,同样能正常触发代码提示:
class Automation: def __init__(self, click_element: ClickElement): self.click_element = click_element # 提前实例化配置ClickElement click_element = ClickElement() # 传入构造函数 Window = Automation(click_element)
原写法无提示的原因
你之前的click_element是独立于Automation的全局/局部实例,不属于Automation类的成员,PyCharm自然不会在Automation实例的成员提示列表中展示它。
内容的提问来源于stack exchange,提问作者crex
相关产品推荐
相关产品推荐

