假设我有一个函数:
func1():
do something
a,b = somevalues,somevalues
现在假设我有另一个函数:
func2():
do something
我现在想在func2()
中使用在func1()
中计算的a,b
。
我试过用
func1():
do something
a,b = somevalues, somevalues
func1.a = somevalues
func1.b = somevalues
func1()
func1.a
但是使用这个,我每次都必须在使用a,b
之前运行func1()
。
func1()
还创建了一些绘图以及计算a,b
。你知道吗
那么是否可以在func2()
中使用a,b
,而不调用func1()
?
answer by robert可能是做你想做的事情最简单的方法。还有一个:
这样做有效而你的方法无效的原因与Python处理函数和类的方式有关。你知道吗
函数体在第一次被调用之前不会被执行。所以当你有:
…您无法访问
func1.a
,直到func1
至少被调用一次,正如您已经发现的那样。你知道吗但是,对于类,类的主体在编译代码时运行。所以当你这么做的时候:
…您可以立即访问
example.a
。你知道吗编辑:
回答注释中的问题:如上所示,使用类本身访问
func1
、a
或b
(在Python中,类是对象,就像任何其他对象一样):你也可以为自己创造一条捷径:
另一种方法是制作
a
和b
的不同版本的实例属性,而不是类属性。你知道吗最后三行都调用相同的函数,因为
obj1.func1
、obj2.func1
和class1.func1
都指向class1
的相同方法。请注意,可以从类(class1
)和类的实例(obj1
,obj2
)调用func1
的原因是func1
是一个静态方法。你知道吗现在您可以在任何地方使用
x
和y
,而无需每次调用func1()
。例如,在func2()中:然后分别用x和y调用
func2()
:这也许就是你想要的。另外,我建议您学习Python入门教程。你知道吗
相关问题 更多 >
编程相关推荐