如何解决如何检查python返回了哪个函数?
我有两种方法使用不同数量的参数。这是两个函数:
def jumpMX(self,IAS,list):
pass
def addMX(self,IAS):
pass
我正在使用一个将这些函数之一返回给main的函数,我将此返回的函数存储在一个名为operation的变量中。 由于这两个参数的数量不同,如何确定返回了哪个函数?
if(operation == jumpMX):
operation(IAS,list)
elif(operation == addMX):
operation(IAS)
它的语法是什么?谢谢!
解决方法
您可以通过其__name__
属性来标识函数:
def foo():
pass
print(foo.__name__)
>>> foo
...或者您的情况:
operation.__name__ #will return either "jumpMX" or "addMX" depending on what function is stored in operation
这是一个演示,您可以根据需要进行修改:
import random #used only for demo purposes
def jumpMX(self,IAS,list):
pass
def addMX(self,IAS):
pass
def FunctionThatWillReturnOneOrTheOtherOfTheTwoFunctionsAbove():
# This will randomly return either jumpMX()
# or addMX to simulate different scenarios
funcs = [jumpMX,addMX]
randomFunc = random.choice(funcs)
return randomFunc
operation = FunctionThatWillReturnOneOrTheOtherOfTheTwoFunctionsAbove()
name = operation.__name__
if(name == "jumpMX"):
operation(IAS,list)
elif(name == "addMX"):
operation(IAS)
,
您可以导入这些函数并像python中的大多数对象一样测试是否相等。
classes.py
<a class="lienarticle" href="entry://mono">mono</a>
<a class="lienarticle" href="entry://aimer"><i>aimer</i></a>
<a class="lienarticle" href="entry://you"><b>you</b></a>
main.py
class MyClass:
@staticmethod
def jump(self,ias,_list):
pass
@staticmethod
def add(self,ias):
pass
但是,我必须强调,我不知道您要完成什么,这似乎是做这种事情的一种非常人为的方式。
此外,您的python代码示例未正确格式化。请参阅PEP-8,其中提出了python的标准样式指南。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。