[英]How to check which function has been returned in python?
我有兩種方法采用不同數量的 arguments。這是兩個函數:
def jumpMX(self,IAS,list):
pass
def addMX(self,IAS):
pass
我正在使用 function,它將這些函數之一返回給 main。我已將返回的 function 存儲在一個名為 operation 的變量中。 由於兩者的參數個數不同,如何識別返回的是哪個function?
if(operation == jumpMX):
operation(IAS,list)
elif(operation == addMX):
operation(IAS)
這個的語法是什么?提前致謝!
您可以通過其__name__
屬性識別 function:
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 中的大多數對象一樣導入這些函數並測試是否相等。
類.py
class MyClass:
@staticmethod
def jump(self, ias, _list):
pass
@staticmethod
def add(self, ias):
pass
主程序
from classes import MyClass
myclass_instance = MyClass()
operation = get_op() # your function that returns MyClass.jump or MyClass.add
if operation == MyClass.jump:
operation(myclass_instance, ias, _list)
elif operation == MyClass.add:
operation(myclass_instance, ias)
但是,我必須強調,我不知道你想要完成什么,這似乎是一種非常人為的方式來做這樣的事情。
此外,您的 python 代碼示例格式不正確。 請參閱PEP-8 ,它提出了 python 的標准樣式指南。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.