代码之家  ›  专栏  ›  技术社区  ›  Gael Lorieul

是否有一个python构造是一个伪函数?

  •  8
  • Gael Lorieul  · 技术社区  · 9 年前

    是否有一个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 回复  |  直到 9 年前
        1
  •  11
  •   Alexander Mihailov    9 年前

    兰姆达斯怎么样?

    myInstance = myClass(lambda:None)
    

    确保您可以通过是默认的 __init__ 功能:

    class myClass:
        def __init__(self, myFunc = lambda:None):
            self.doIt = myFunc
    
        2
  •  2
  •   galinette    9 年前

    这应该是有效的:

    class myClass:
        def __init__(self, myFunc = lambda : None):
            self.doIt = myFunc
    
    myInstance = myClass()
    
        3
  •  1
  •   Roux    7 年前

    我使用了以下方法:

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

    后一行显示“无”。

        4
  •  0
  •   JAW    9 年前

    这对我有用:

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