如何让一个函数不定义就什么都不做?

时间:2019-04-21 22:59:32

标签: python

我希望有一些在我的对象的方法被调用时被调用的函数。这些函数不是由方法定义的-它们稍后会提供给方法(或可能完全不提供)。是否有比使用以下更为优雅的占位符解决方案:

class MyObj:
    def __init__(self):
        self.bind = self.donothing #variable that may or may not be set by the parent

    def func(self):
        """Function to be called by the parent"""
        self.bind()

        ## do stuff

    @staticmethod
    def donothing():
        pass

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

class MyObj:
    def __init__(self):
        self.bind = None

    def func(self):
        """Function to be called by the parent"""
        if self.bind:
            self.bind()

            ## do stuff

    def define_function(self, f):
        self.bind = f

功能和其他对象一样,可以用作方法的参数。只需初始化没有值的变量,然后使用设置器将其赋值即可。

答案 1 :(得分:0)

我不久前问了这个问题,不知道答案。后来我知道答案是:

class MyObj:
    def __init__(self):
        self.bind = lambda *a, **b: ()

    def func(self):
        """Function to be called by the parent"""
        self.bind()

        ## do stuff