如何在类的test函数内部操作deriv_position列表实现添加、清空功能
错误原因
- 代码抛出
NameError: name 'deriv_position' is not defined的核心原因:类属性无法在类内部的方法中直接被调用,必须显式指定属性所属的类/实例,才能正常访问。 - 你当前的代码是在类定义阶段直接执行
test(),不需要实例化类,直接通过类名访问类属性即可。
最优实现(适配你当前的调用逻辑)
class TestClass: deriv_position = [] def test(): # 显式通过类名调用类属性 if len(TestClass.deriv_position) > 0: print("trade is open") TestClass.deriv_position.clear() else: print("trade is close") TestClass.deriv_position.append("1") test()
规范拓展(需实例化调用的场景)
如果后续你需要实例化TestClass后再调用方法,更通用的实现方式是将方法定义为实例方法,通过self.__class__访问类属性,避免硬编码类名,后续修改类名时不需要同步修改属性调用代码:
class TestClass: deriv_position = [] def test(self): if len(self.__class__.deriv_position) > 0: print("trade is open") self.__class__.deriv_position.clear() else: print("trade is close") self.__class__.deriv_position.append("1") # 实例化后调用 obj = TestClass() obj.test()
内容的提问来源于stack exchange,提问作者siad
相关产品推荐
相关产品推荐

