Python 动画子类

Python 动画子类,python,kivy,Python,Kivy,在动画类中,如何在默认情况下设置d=0.4,t='in\u out\u quad'?我可以使用子类来实现吗 从kivy.app导入应用 从kivy.lang导入生成器 从kivy.animation导入动画 KV=”“” 标签 正文:“123” 在触摸屏上:app.test() """ 类别MyApp(应用程序): def生成(自): self.root=Builder.load\u串(KV) def测试(自我): a=动画(x=500,d=0.2,t=in\u out\u quad) a、 开

在动画类中,如何在默认情况下设置d=0.4,t='in\u out\u quad'?我可以使用子类来实现吗

从kivy.app导入应用
从kivy.lang导入生成器
从kivy.animation导入动画
KV=”“”
标签
正文:“123”
在触摸屏上:app.test()
"""
类别MyApp(应用程序):
def生成(自):
self.root=Builder.load\u串(KV)
def测试(自我):
a=动画(x=500,d=0.2,t=in\u out\u quad)
a、 开始(self.root)
MyApp().run()
尝试了类似的方法(未成功):

从kivy.app导入应用
从kivy.lang导入生成器
从kivy.animation导入动画
KV=”“”
标签
正文:“123”
在触摸屏上:app.test()
:
d:.2
t:“进/出四区”
"""
类MyAnim(动画):
通过
类别MyApp(应用程序):
def生成(自):
self.root=Builder.load\u串(KV)
def测试(自我):
a=MyAnim(x=500)
a、 开始(self.root)
MyApp().run()

如果参数d和t在我的项目中是相同的,我不想多次写入它们的值

我还没有对此进行测试,但我认为您可以将这些默认值放在类定义中:

class MyAnim(Animation):
    def __init__(self, **kw):
        super(MyAnim, self).__init__(d = .2, t = 'in_out_quad', **kw)
当然,如果您使用
MyAnim
并指定另一个
t=
d=
,您将得到一个错误

如果尚未指定默认值,则只需添加默认值即可避免该错误:

class MyAnim(Animation):
    def __init__(self, **kw):
        if 'd' not in kw:
            kw['d'] = 0.2
        if 't' not in kw:
            kw['t'] = 'in_out_quad'
        super(MyAnim, self).__init__(**kw)

是的,如果我传递另一个d(例如d=1)作为参数,我会得到一个错误。您能解释一下为什么会发生这种情况吗?之所以会发生错误,是因为超类(
Animation
)为同一个参数获取了两个设置。为了避免这种情况,我添加了另一个版本的代码。
class MyAnim(Animation):
    def __init__(self, **kw):
        if 'd' not in kw:
            kw['d'] = 0.2
        if 't' not in kw:
            kw['t'] = 'in_out_quad'
        super(MyAnim, self).__init__(**kw)