我想在类中创建一个可以访问具有相同功能的两个不同成员的函数。例如,在下面的代码中,我希望下面的两行都使用' apply'对类
中的不同变量起作用print(state.apply(rate))
print(state.apply(wage))
我曾经想过如果我在函数定义中放入一个虚拟变量(称为曝光),它会将其替换为传递给函数的变量(下面示例中的速率和工资)。在python 3中执行此操作的正确方法是什么?
class State():
def __init__(self):
self.rate = 0
self.wage = 0
def apply(self, exposure):
self.exposure = self.exposure - 1
return self.exposure
state = State()
rate = State.rate
wage = State.wage
print(state.apply(rate))
print(state.apply(wage))
编辑:我在每个印刷语句中都有一个拼写错误,其中我有State而不是state。我现在纠正了这个
答案 0 :(得分:4)
这是唯一的方法:
class State:
def __init__ (self):
self.rate = 0
self.wage = 0
def apply (self, exposure):
setattr(self, exposure, getattr(self, exposure) - 1)
return getattr(self, exposure)
>>> state = State()
>>> print(state.apply('rate'))
-1
>>> print(state.apply('wage'))
-1
>>> print(state.apply('wage'))
-2
请注意,这些是实例变量,因此您无法使用State
类型访问它们,只能使用对象state
。
然而,我会说,无论你在尝试什么,你都做错了。如果您描述实际问题,我们可能会建议一种更好的解决方案。