有一个python构造是一个虚函数吗?

时间:2015-09-15 09:41:27

标签: python function nonetype

是否有一个python结构对应于一个不带参数的函数,什么也不做,什么都不返回?类似于对象None的东西但是它是一个函数而不是一个对象?

上下文

我想定义一个类,其中构造函数将函数作为参数获取并将其引用到类属性。在实例化时,用户决定他/她是否希望该功能是他/她定义他/她自己的实际功能,或者保留默认值,即调用无效功能的虚拟功能。

以下是我现在所拥有的:

def sayHello():
    print("hello world !")

def doNothing():
    pass

class myClass:
    def __init__(self, myFunc):
        self.doIt = myFunc

myInstance = myClass(sayHello)
myInstance.doIt()
myInstance = myClass(doNothing) # Works but requires defining function doNothing()
myInstance.doIt()
#myInstance = myClass(None) # Returns error "'NoneType' object is not callable"
myInstance.doIt()

4 个答案:

答案 0 :(得分:7)

lambdas怎么样?

myInstance = myClass(lambda:None)

当然,您可以将__init__函数作为默认值传递:

class myClass:
    def __init__(self, myFunc = lambda:None):
        self.doIt = myFunc

答案 1 :(得分:2)

这应该有效:

class myClass:
    def __init__(self, myFunc = lambda : None):
        self.doIt = myFunc

myInstance = myClass()

答案 2 :(得分:0)

这对我有用:

def none(function=True): if function==True: return None else: function()

答案 3 :(得分:0)

我使用了以下内容:

a=lambda:None
a()
print a()

后一行打印无。