Я знаю, что это можно решить, импортировав подсказки типов если существует TypeVar или TypeAlias для него, или удалить их вообще, или даже удалить все лишние аргументы, которые мне на самом деле не нужны, и использовать вместо них *args, **kwargs, но Я этого не хочу.
Я хочу, чтобы мой подкласс функционировал так же, как суперкласс, и только расширял его функциональность. Я обнаружил, что явные аргументы с подсказками их типов позволяют лучше работать с классом и его возможностями.
Пример:
Код: Выделить всё
import tkinter
from tkinter import ttk
class MyFrame(ttk.Frame):
def __init__(self, master: tkinter.Misc | None = ..., *, border: tkinter._ScreenUnits = ...,
borderwidth: tkinter._ScreenUnits = ..., class_: str = ..., cursor: tkinter._Cursor = ...,
height: tkinter._ScreenUnits = ..., name: str = ..., padding: _Padding = ...,
relief: tkinter._Relief = ..., style: str = ..., takefocus: tkinter._TakeFocusValue = ...,
width: tkinter._ScreenUnits = ...) -> None:
super().__init__(master, border, borderwidth, class_, cursor, height, name,
padding, relief, style, takefocus, width)
И запуск код с этим классом вызывает эту ошибку:
Код: Выделить всё
AttributeError: module 'tkinter' has no attribute '_ScreenUnits'
Код: Выделить всё
AttributeError: module 'tkinter' has no attribute '_Cursor'
Код: Выделить всё
TypeError: can only concatenate str (not "ellipsis") to str
Есть ли простой способ наследовать вводить подсказки из суперкласса, не нарушая при этом мой код?
Или я делаю что-то не так?
Подробнее здесь: https://stackoverflow.com/questions/772 ... rent-class