首页 > 解决方案 > 返回具有多个输入参数的函数的值以在同一类中具有多个参数的另一个函数中使用?

问题描述

现在我知道有很多重复的人在问类似的问题[1] [2] [3] [4] [5],但是我相信他们都没有在同一个类中具有多个参数的另一个函数中调用具有多个输入参数的函数; 这恰好是我的特殊问题(除非我在搜索过程中错过了它)。

下面是一个最小的工作示例,我试图在 function2 中使用 function1 的结果:

class Something():
    def __init__(self,input1, input2, input3):
        self.input1 = input1
        self.input2 = input2
        self.input3 = input3

    def function1(self, input4, input5, input6):
        something = (self.input1 +  self.input2 + self.input3)+input4+input5+input6
        return something

    def function2(self, input7, input8):
        something2 = self.function1(self.input4, self.input5, self.input6)+input7+input8
        return something2        

a = Something(1,2,3)
print(a.function1(4,5,6))
print(a.function2(7, 8))

Function1 打印正常,但是当我调用 Function2 时,出现错误:

AttributeError: 'Something' object has no attribute 'input4'

我可能在这里遗漏了一个简单的步骤,但是我似乎无法弄清楚如何在 function2 中使用 function1 的结果,而无需再次重新定义所有输入参数。

标签: pythonpython-3.x

解决方案


input4是一个范围是本地的参数function1。这同样适用于input5input6。您需要使用selfin分配它们__init__,以便使用self实例的类方法可以访问它们。如果您希望这些变量可以访问而无需在参数列表中重新定义它们,您可以self使用function1

class Something():
    def __init__(self,input1, input2, input3):
        self.input1 = input1
        self.input2 = input2
        self.input3 = input3

    def function1(self, input4, input5, input6):
        self.input4 = input4
        self.input5 = input5
        self.input6 = input6
        something = (self.input1 +  self.input2 + self.input3)+input4+input5+input6
        return something

    def function2(self, input7, input8):
        something2 = self.function1(self.input4, self.input5, self.input6)+input7+input8
        return something2        

a = Something(1,2,3)
print(a.function1(4,5,6))
print(a.function2(7, 8))

# 21 
# 36

推荐阅读