Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用相同的函数访问类变量_Python_Python 3.x - Fatal编程技术网

Python 使用相同的函数访问类变量

Python 使用相同的函数访问类变量,python,python-3.x,Python,Python 3.x,我想在一个类中创建一个函数,该函数可以访问具有相同函数的两个不同成员。例如,在下面的代码中,我希望下面的两行对类中的不同变量使用“apply”函数 print(state.apply(rate)) print(state.apply(wage)) 我曾认为,如果我在函数定义中放入一个虚拟变量(称为exposure),它将替换为传递给函数的变量(下面示例中的rate和wage)。在Python3中,这样做的正确方法是什么 class State(): def __init__(self):

我想在一个类中创建一个函数,该函数可以访问具有相同函数的两个不同成员。例如,在下面的代码中,我希望下面的两行对类中的不同变量使用“apply”函数

print(state.apply(rate))
print(state.apply(wage))
我曾认为,如果我在函数定义中放入一个虚拟变量(称为exposure),它将替换为传递给函数的变量(下面示例中的rate和wage)。在Python3中,这样做的正确方法是什么

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))

EDIT:我打了一个错别字,每个打印语句中都有State而不是State。我现在已经纠正了这一点

这是唯一的方法:

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


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

这是唯一的方法:

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


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

您的方法毫无意义。请参见,例如,您似乎在某种程度上混淆了名为
State
的类及其实例,您可以根据需要创建任意多个实例,但在上述示例中,仅创建一个名为
State
的实例。
State
类没有
rate
也没有
wage
(实例具有这些属性,因为它们的
\uuuu init\uuuuuu
设置了这些属性),并且可以对实例而不是整个类调用
apply
(并且要求
exposure
属性提前存在)。所以,你的Q需要更清晰。对不起,这是一个打字错误,我需要编辑。在每个打印语句中都应该是小写的s。您的方法没有意义。请参见,例如,您似乎在某种程度上混淆了名为
State
的类及其实例,您可以根据需要创建任意多个实例,但在上述示例中,仅创建一个名为
State
的实例。
State
类没有
rate
也没有
wage
(实例具有这些属性,因为它们的
\uuuu init\uuuuuu
设置了这些属性),并且可以对实例而不是整个类调用
apply
(并且要求
exposure
属性提前存在)。所以,你的Q需要更清晰。对不起,这是一个打字错误,我需要编辑。在每个打印语句中,它应该是小写的s