我有两个功能的导入模块

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.kind1ClassOfObject.kind1

以来
type(ClassOfObject.kind1) == <class 'function'>
type(ObjectInstance.kind1) == <class 'method'>且具有不同的地址很难直接进行比较,一种解决方法是使用一些属性进行比较(例如.__name__或自己制作)

关于python - 高阶功能IF ELSE检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29835018/

10-12 01:06