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

Gae*_*eul 7 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()
Run Code Online (Sandbox Code Playgroud)

Ale*_*lov 7

lambdas怎么样?

myInstance = myClass(lambda:None)
Run Code Online (Sandbox Code Playgroud)

当然你可以传递默认为你的__init__功能:

class myClass:
    def __init__(self, myFunc = lambda:None):
        self.doIt = myFunc
Run Code Online (Sandbox Code Playgroud)

  • 我认为函数对象是可变的,这让我相信这是一个棘手的想法。我不会将其作为默认参数(而是使用重新创建的函数对象),除非我确定没有人可以访问和更改它...... (2认同)