我们说我有一个功能:
func1():
do something
a,b = somevalues,somevalues
现在让我们说我有另一个功能:
func2():
do something
我现在想在a,b
func2()
中使用func1()
func1():
do something
a,b = somevalues, somevalues
func1.a = somevalues
func1.b = somevalues
func1()
func1.a
。
我尝试使用
func1()
但是使用此功能,我必须在使用a,b
之前每次都运行func1()
。
a,b
还会创建一些图表并计算a,b
。
那么可以在func2()
中使用func1()
而无需调用typebox.innerHTML += "<div class='typebox'><img id='typeImg' width='30px' height='30px' src="+d[o].src+"></div>";
吗?
答案 0 :(得分:5)
这可能就是你想要的。另外,我建议你通过一个介绍性的Python教程。
func1():
#do something
a,b = somevalues, somevalues
return a, b
func2(a, b):
#do something on a and b
a, b = func1()
func2(a, b)
答案 1 :(得分:2)
answer by robert可能是做你想要的最简单的方法。这是另一个:
class class1():
a,b = somevalues, somevalues
@staticmethod
def func1():
do something
func2(class1.a, class1.b)
class1.func1()
这种方法起作用并且你的方式不起作用的原因与Python处理函数和类的方式有关。
在第一次调用函数之前,函数体不会被执行。所以当你有:
def func1():
func1.a = somevalue
...在您func1.a
被调用至少一次之前,您无法访问func1
,正如您已经发现的那样。
但是,对于类,类的主体在编译代码时运行。所以当你这样做时:
class example:
a = somevalue
...您可以立即访问example.a
。
编辑:
回答评论中的问题:使用类本身访问func1
,a
或b
,如上所示(在Python中,类ARE对象,就像任何其他对象一样) :
class1.a
class1.func1()
您也可以为自己创建一个快捷方式:
func1 = class1.func1
func1()
另一种做事方式 - 使您可以拥有a
和b
的不同版本 - 是使a
和b
实例属性而不是类属性。
class class1:
def __init__(self, a, b):
self.a, self.b = a, b
@staticmethod
def func1():
dosomething
obj1 = class1(somevalue1A, somevalue1B)
obj2 = class1(somevalue2A, somevalue2B)
func2(obj1.a, obj1.b)
func2(obj2.a, obj2.b)
obj1.func1()
obj2.func1()
class1.func1()
最后三行都调用相同的函数,因为obj1.func1
,obj2.func1
和class1.func1
都指向class1
的相同方法。请注意,您可以从类(func1
)和类的实例(class1
,obj1
)调用obj2
的原因是func1
是静态方法。
答案 2 :(得分:0)
func1():
do something
a,b = somevalues,somevalues
return a, b
x, y = func1()
现在,您可以在任何地方使用x
和y
,而无需每次都使用callin func1()
。例如在func2()中这样:
def func2(a, b):
do something
然后分别使用x和y调用func2()
:
func2(x, y)