Можно ли каким-то образом извлечь тип методов некоторого класса и использовать их в 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
Типизация Python: принимать kwargs только с методами некоторых классов ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Типизация Python: принимать kwargs только с методами некоторых классов
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-