gpt4 book ai didi

python - 如何使方法从 Python 中同一类中的另一个方法获取值

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:10 24 4
gpt4 key购买 nike

我有以下类和相应的方法。

#!/usr/bin/env python
class Foo:
def __init__(self, x):
self.x = x
def bar(self):
bar_out = self.x + 5
return bar_out
def qux(self):
qux_out = bar_out + 3
return qux_out

def main():
"""docstring for main"""
f = Foo(5)

main_bar_out = f.bar()
print main_bar_out

#main_qux_out = f.qux()
#print main_qux_out



if __name__ == '__main__':
main()

我想在这里做的是让方法a=quxbar 中获取值,处理它并返回一个值。所以 main_qux_out 的最终输出是 13。我怎样才能正确地做到这一点?

请注意,这里我希望 qux() 自动从 bar() 中获取值,而不传递任何参数。

更新

感谢@thefourtheye 的回复。我还有其他问题。

假设我想让 bar() 返回两个或更多值(这可以是字符串、字符串、列表或字典),我如何从 qux( )。我试过了但是失败了。

#!/usr/bin/env python
class Foo:
def __init__(self, x):
self.x = x
def bar(self):
self.bar1_out = self.x + 5
self.bar2_out = self.x + 1
return (self.bar1_out,self.bar2_out)
def qux(self):
self.qux_out1 = self.bar1_out() + 3
self.qux_out2 = self.bar2_out() + 6
return ( self.qux_out1, self.qux_out2)

def main():
"""docstring for main"""
f = Foo(5)

mbr_out1, mbr_out2 = f.bar()
print mbr_out1, "\t", mbr_out2

mqx_out1, mqx_out2 = f.qux()
print mqx_out1, "\t", mqx_out2


if __name__ == '__main__':
main()

这应该打印:

10  6
13 12

最佳答案

您不能从另一个函数访问一个函数中定义的局部变量。但是您可以调用 bar 函数并像这样使用返回值

def qux(self):
return self.bar() + 3

如果您想动态决定使用哪个值(bar 或作为参数传递的值),那么您可以这样做

def qux(self, myvalue = None):
if myvalue is not None:
return myvalue + 3
else:
return self.bar() + 3

如果你没有给qux传递任何值,myvalue将默认为None作为它的值。在函数内部,我们检查它是否不是 None,然后我们使用它的值,否则我们调用 self.bar() 并使用该值。

如果您打算从 bar 返回两个值,那么您可以像这样解压它们

def qux(self, myvalue = None):
first, second = myvalue or self.bar()
return first + 3, second + 6

此处 myvalue 或 self.bar() 确保我们在 myvalueNone< 时采用 self.bar()/.

注意:如果您打算这样做,那么您还需要为 myvalue 传递两个值,就像这样

self.qux((1, 2))

关于python - 如何使方法从 Python 中同一类中的另一个方法获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22753178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com