函數(shù)式編程
2021-10-05 16:15:52
下面的代碼示例來自 BeeWare 套件示例。(https://github.com/eliasdorneles/drawingapp-voc/blob/master/drawingapp/app.py)表達implements=android.view.View[OnClickListener]是什么意思?應(yīng)該有(一個列表)基類。是我無法理解的框架或標準 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條經(jīng)驗 獲得超8個贊
Python 的類定義語法使您可以keyword=value
像使用基類一樣多地使用條目。默認情況下metaclass=...
有意義,并且在使用時__init_subclass__
,其他此類關(guān)鍵字參數(shù)將傳遞給該方法。所以implements=
從語法的角度來看,在類定義中使用是好的。
請注意,BeeWare不在Android 上運行 Python,它使用名為 VoC的轉(zhuǎn)譯器將 Python 代碼轉(zhuǎn)換為 Java。類中的implements=
關(guān)鍵字參數(shù)用于讓您在 Python 代碼中定義 Java 接口。據(jù)推測,像這樣的附加名稱OnClickListener
是可用的,因為 VoC 使它們可用。
VoC 將 Python 字節(jié)碼轉(zhuǎn)換為 Java,因此兼容 BeeWare 的 Python 必須實現(xiàn)的只是正確的 Python 語法。諸如NameError
s 之類的運行時問題不一定是問題,這是 Java 翻譯器可以彌補的。
添加回答
舉報
0/150
提交
取消