Типизация Python: принимать kwargs только с методами некоторых классовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Типизация Python: принимать kwargs только с методами некоторых классов

Сообщение Anonymous »

Можно ли каким-то образом извлечь тип методов некоторого класса и использовать их в kwargs?
Пример того, что я хочу:
< pre class="lang-py Prettyprint-override">class A:
prop: int = 10

def foo(self):
pass

def bar(self):
pass

def fun[T](**kwargs: Idk[T]):
pass

fun[A](foo=lambda: 123) # this is correct
fun[A](prop=200) # this is not
fun[A](smth=lambda: 123) # this is not

Эквивалент в TypeScript, который работает:
class A {
prop: number = 100;

foo() {}

bar() {}
}

type OnlyMethods = {
[K in keyof T as T[K] extends Function ? K : never]: T[K];
};

function fun(arg: Partial) {}

fun({
bar() {}, // this works
});

fun({
prop: 200, // error
});

fun({
smth() {}, // error
});


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

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

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

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

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

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

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