我有一个C类,有两个方法,a和b,我希望其中一个(b)总是在另一个之后调用(a)
class C(Widget) :
def __init__(self) :
super(C, self).__init__()
self.bind(a=self.b) # something like this
def a(self) : pass
def b(self) : pass
如何?
答案 0 :(得分:0)
如何从a调用b。
def a(self) :
#some code
self.b()
答案 1 :(得分:0)
我不太清楚为什么它不能通过绑定工作,但我认为它与使用不同的对象有关,例如绑定到一个未执行的旧方法或那种意义上的东西。
这是super()
拯救的地方。您看,super()
不仅用于调用您继承的类的__init__()
,还有其他用途。
我刚刚将__init__()
替换为<overridden method>()
:
from kivy.base import runTouchApp
from kivy.uix.button import Button
class MyBase(Button):
def overridden(self, *args):
self.stable()
def stable(self, *args):
print('stable')
class MyButton(MyBase):
def __init__(self, **kwargs):
super(MyButton, self).__init__(**kwargs)
self.bind(on_release=self.overridden)
def overridden(self, *args):
# run before overriden stuff
super(MyButton, self).overridden()
print('new overridden')
# run after overridden stuff
super(MyButton, self).overridden()
runTouchApp(MyButton())