基于实例变量值实现类方法(OOP)的问题与解决
OOP新手的Python方法分支问题
我是OOP新手,想创建包含依赖实例变量值的方法的对象,写了如下Python代码:
class cases: def __init__(self, a): self.a = a def f1(self, x): return x def f2(self, x): return 100*x if self.a < 3: self.x = f1 else: self.x = f2
创建实例c1 = cases(2)和c2 = cases(5)后,期望调用c1.x(10)返回10、c2.x(10)返回1000,但运行时出现NameError: name 'self' is not defined;把self.a改成a后,又出现NameError: name 'a' is not defined。请问如何访问实例变量进行分支判断?
解决方法(更新)
按照指导修改代码后,实现了预期效果:
def f1(x): return x def f2(x): return 100*x class case: def __init__(self, a): self.a = a def x(self, x): if self.a < 3: return f1(x) else: return f2(x) # 创建不同实例 c1 = case(2) c2 = case(4) # 输出结果 print(c1.x(10)) print(c2.x(10))
运行结果符合预期。
内容的提问来源于stack exchange,提问作者zuiop
相关产品推荐
相关产品推荐

