为了账号安全,请及时绑定邮箱和手机立即绑定

Python 类定义中的“实现”是什么意思?

Python 类定义中的“实现”是什么意思?

函数式编程 2021-10-05 16:15:52
下面的代码示例来自 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 语法。诸如NameErrors 之类的运行时问题不一定是问题,这是 Java 翻译器可以弥补的。


查看完整回答
反对 回复 2021-10-05
  • 2 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号