子类构造函数有一个param,它将回调函数作为参数。我想在我的子类构造函数中为回调插入另一个自定义函数,以便我可以调用多个回调。有没有一种简单的方法可以在不修改回调的情况下执行此操作,或者通过Base类中的所有回调将一些特殊代码写入循环。
class Base:
def __init__(callback=None):
if callback: callback()
class Subclass(Base):
def __init__(callback=None):
def another_callback(...):
print "another_callback"
super(Base, self).__init__(callback)
使用示例:
def a_callback(...):
print "a_callback"
x = Subclass(callback=a_callback)
上面应该打印(顺序并不重要) " a_callback" " another_callback"
答案 0 :(得分:0)
我认为这段代码符合您的要求。
我必须修改原始代码,以便:
class Base:
def __init__(self, callback=None):
if callback: callback()
class Subclass(Base):
def __init__(self, callback=None):
def another_callback():
if callback: callback()
print("another_callback")
super().__init__(another_callback)
def a_callback():
print("a_callback")
def b_callback():
print("b_callback")
x = Subclass(callback=a_callback)
y = Subclass(callback=b_callback)
输出:
a_callback
another_callback
b_callback
another_callback
输出显示Subclass
的每个实例都可以调用任何给定的回调以及构造函数中的本地函数。
答案 1 :(得分:0)
在调用超类'__init__()
之前,只需在子类'__init__()
中调用它 - 只要基类是“,它就可以在Python 2和3中运行” new-style“(直接或间接地将object
作为其基类之一... Python 3.x中的默认值。
class Base(object):
def __init__(self, callback=None):
if callback: callback()
class Subclass(Base):
def __init__(self, callback=None):
def another_callback():
print('another_callback')
another_callback() # Just call it.
super(Subclass, self).__init__(callback)
def a_callback():
print('a_callback')
x = Subclass(callback=a_callback)
输出:
another_callback
a_callback