访问具有相同功能的类变量

时间:2014-12-29 14:57:23

标签: python python-3.x

我想在类中创建一个可以访问具有相同功能的两个不同成员的函数。例如,在下面的代码中,我希望下面的两行都使用' 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。我现在纠正了这个

1 个答案:

答案 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

然而,我会说,无论你在尝试什么,你都做错了。如果您描述实际问题,我们可能会建议一种更好的解决方案。