下面的代码示例来自 BeeWare 套件示例。(https://github.com/eliasdorneles/drawingapp-voc/blob/master/drawingapp/app.py)表达implements=android.view.View[OnClickListener]是什么意思?应该有(一个列表)基类。是我无法理解的框架或标准 python 的一些不兼容的特殊语法(并且在文档中遗漏了)?此外,我们在OnClickListener这里使用的是从未导入的。在类似android.Constants.OnClickListener或类似的符号之前没有通配符导入 (*) 和模块前缀。OnClickListener在这种情况下,Python 解释器如何找到值?import androidfrom android.widget import LinearLayout, TextView, Buttonimport android.content.Contextfrom android.graphics import Bitmap, Canvas, Color, Paint, Path, PorterDufffrom android.view import MotionEvent, Gravityimport android.viewclass ButtonClick(implements=android.view.View[OnClickListener]): def __init__(self, callback, *args, **kwargs): self.callback = callback
2 回答

慕桂英3389331
TA贡献2036条经验 获得超8个赞
Python 的类定义语法使您可以keyword=value
像使用基类一样多地使用条目。默认情况下metaclass=...
有意义,并且在使用时__init_subclass__
,其他此类关键字参数将传递给该方法。所以implements=
从语法的角度来看,在类定义中使用是好的。
请注意,BeeWare不在Android 上运行 Python,它使用名为 VoC的转译器将 Python 代码转换为 Java。类中的implements=
关键字参数用于让您在 Python 代码中定义 Java 接口。据推测,像这样的附加名称OnClickListener
是可用的,因为 VoC 使它们可用。
VoC 将 Python 字节码转换为 Java,因此兼容 BeeWare 的 Python 必须实现的只是正确的 Python 语法。诸如NameError
s 之类的运行时问题不一定是问题,这是 Java 翻译器可以弥补的。
添加回答
举报
0/150
提交
取消