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

下面的代码示例来自 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 android

from android.widget import LinearLayout, TextView, Button

import android.content.Context

from android.graphics import Bitmap, Canvas, Color, Paint, Path, PorterDuff

from android.view import MotionEvent, Gravity

import android.view


class ButtonClick(implements=android.view.View[OnClickListener]):

    def __init__(self, callback, *args, **kwargs):

        self.callback = callback


函数式编程
浏览 260回答 2
2回答

慕桂英3389331

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 翻译器可以弥补的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python