Как правильно, анонтировать тип класса, подобного дескриптору, в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно, анонтировать тип класса, подобного дескриптору, в Python?

Сообщение Anonymous »

Код: Выделить всё

classonlymethod
декоратор/дескриптор, определенный ниже, похож на встроенный ClassMethod , но вам не разрешено вызывать метод на экземплярах, только в самом классе.

Код: Выделить всё

from typing import Concatenate, Self
from collections.abc import Callable
from functools import partial

class classonlymethod[C, **P, R]:
def __init__(self, func: Callable[Concatenate[type[C], P], R], /):
self._func = func

def __get__(self, instance: None, owner: type[C], /) -> Callable[P, R]:
if instance is not None:
raise AttributeError('class-only method')

return partial(self._func, owner)

class Foo:
@classonlymethod
def bar(cls: type[Self]) -> None:
raise NotImplementedError()
Тем не менее, Pyright жалуется на определение foo.bar :

Тип параметра "cls" должен быть супертип его класса "foo" (отчетггеналтипейсы)





Подробнее здесь: https://stackoverflow.com/questions/796 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»