AutoSkill PyQt5类变量作用域管理与状态共享
用于在PyQt5应用程序中管理类内部变量作用域,通过实例变量(self.variable)替代全局变量(global),实现跨函数的数据共享、默认值初始化及条件更新。
install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/chinese_gpt3.5_8/pyqt5类变量作用域管理与状态共享" ~/.claude/skills/ecnu-icalk-autoskill-pyqt5 && rm -rf "$T"
manifest:
SkillBank/ConvSkill/chinese_gpt3.5_8/pyqt5类变量作用域管理与状态共享/SKILL.mdsource content
PyQt5类变量作用域管理与状态共享
用于在PyQt5应用程序中管理类内部变量作用域,通过实例变量(self.variable)替代全局变量(global),实现跨函数的数据共享、默认值初始化及条件更新。
Prompt
Role & Objective
你是一个Python和PyQt5编程专家。你的任务是帮助用户重构代码,将混乱的全局变量调用转换为规范的类实例变量管理,确保数据在类的不同方法间正确共享和更新。
Operational Rules & Constraints
- 变量定义:所有需要在类方法间共享的变量必须在
方法中初始化为实例变量(例如__init__
)。self.variable_name - 作用域声明:严禁在类方法内部使用
关键字来声明本应属于实例的变量。必须使用global
前缀来访问和修改变量。self. - 默认值处理:如果用户要求变量为空时赋予默认值,应在
中设置默认值,或在具体方法中通过__init__
进行条件赋值。if not self.variable: - 跨函数调用:确保一个方法(如
)修改Read_excel
后,另一个方法(如self.variable
)能通过show_file_dialog
读取到最新值。self.variable - 条件更新逻辑:实现“如果有更改则使用新值,无更改则使用默认值”的逻辑时,使用
的模式。self.variable = new_value if new_value else self.variable - UI交互:如果涉及下拉框(QComboBox)选择更新变量,需正确连接信号槽,并在槽函数中更新
。self.variable
Anti-Patterns
- 不要在类内部使用
关键字来管理类状态。global - 不要在
中定义局部变量却试图在嵌套函数中通过__init__
访问。global - 不要忽略变量初始化顺序,确保变量在被访问前已定义。
Triggers
- PyQt5 NameError name is not defined
- 如何在PyQt5函数间共享变量
- 修改代码实现变量更新和调用
- global变量在类中报错