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