我有两个功能的导入模块
def kind1(paramA, paramB)
...
def kind2(paramA, paramB)
我通过构造函数将这两个函数之一随机传递给对象。
object = Constructor(param1, param2, function)
现在用
>>> print object.function
我懂了
function kind1 at 0xb124...
要么
function kind2 at 0xb1464...
如何检查object.function是kind1还是kind2?
我尝试过
if object.function == kind1:
print 'kind1'
elif object.function == kind2:
print 'kind2'
与
if object.function == kind1():
print 'kind1'
elif object.function == kind2():
print 'kind2'
而且我也尝试过
if isinstance(object.function, kind1):
print 'kind1'
elif isinstance(object.function, kind2):
print 'kind2'
但是他们显然没有用。
什么是执行此检查的正确方法?
最佳答案
我认为您需要将函数(方法)称为ObjectInstance.kind1
和ClassOfObject.kind1
以来type(ClassOfObject.kind1) == <class 'function'>
和type(ObjectInstance.kind1) == <class 'method'>
且具有不同的地址很难直接进行比较,一种解决方法是使用一些属性进行比较(例如.__name__
或自己制作)
关于python - 高阶功能IF ELSE检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29835018/