当我在 python 类中的另一个方法中调用方法时,如何访问实际输出而不是位置索引

How can I access actual output instead of location index when I call methods in another method in a python class

提问人:ManishVangara 提问时间:2/15/2023 最后编辑:Bas HManishVangara 更新时间:2/15/2023 访问量:18

问:

def get_all_values(self):
    values_list = [self.get_input_cable, self.get_output_cable, self.get_color, self.get_price]
    return values_list

这是我将方法调出到列表中并打印出来时的输出。

\[\<bound method Charger.get_input_cable of \<__main__.Charger object at 0x1030b4e10\>\>, \<bound method Charger.get_output_cable of \<__main__.Charger object at 0x1030b4e10\>\>, \<bound method Charger.get_color of \<__main__.Charger object at 0x1030b4e10\>\>, 600\]

我尝试了以下代码:

class Charger(object):
    def __init__(self, input_cable, output_cable, color=None):
        self.input_cable = input_cable
        self.output_cable = output_cable
        self.color = color
        self.price = 0
    
    def __str__(self):
        return "Input: " + str(self.input_cable) + "\nOutput: " + str(self.output_cable) + "\nColor: " + str(self.color)
    # Getters
    def get_input_cable(self):
        return self.input_cable
    def get_output_cable(self):
        return self.output_cable
    def get_color(self):
        return self.color
    def get_price(self):
        return self.price
    # Setters
    def set_input_cable(self, input_cable):
        self.input_cable = input_cable
    def set_output_cable(self, output_cable):
        self.output_cable = output_cable
    def set_color(self, color):
        self.color = color
    def set_price(self, price):
        self.price = price
    
    # Behaviours (Methods)
    def sale(self,discount=0):
        sale_price = self.price - self.price * discount/100
        return sale_price
    
    def get_all_values(self):
        values_list = [self.get_input_cable, self.get_output_cable, self.get_color, self.get_price]
        return values_list

    

C1 = Charger("C type", "B type", "Black")
C2 = Charger("USB", "C type", "White")
C1.set_price(600)
C2.set_price(1300)

print(C1.get_price())
print(C2.get_price())

print(C1.get_all_values())
python-3.x 方法

评论

0赞 jsbueno 2/15/2023
您不是在调用这些方法 - 只需在指定每个方法后添加对:()values_list = [self.get_input_cable(), self.get_output_cable(), self.get_color(), self.get_price()]

答:

0赞 Vaibhav 2/15/2023 #1

如果要访问在 Python 类中另一个方法中调用的方法的实际输出值,可以将输出值存储在方法内的变量中并返回它,也可以直接在调用方法的 return 语句中返回方法调用的输出值。

例如,如果有一个方法 method1 调用另一个方法 method2,则可以执行以下任一操作:

类 MyClass: def 方法 1(self): 结果 = self.method2() # 用结果做点什么 返回结果

def method2(self):
    # do some computation
    return output_value

或者您可以简单地执行以下操作:

类 MyClass: def 方法 1(self): 结果 = self.method2() # 用结果做点什么 返回结果

def method2(self):
    # do some computation
    return output_value

在这两种情况下,output_value 都是 method2 的实际输出。

评论

1赞 jsbueno 2/15/2023
除了解释如何使用另一个类从零开始操作之外,还应该指出问题代码中的错误所在。