self 可调用成员的 Python 类型提示

问题描述 投票:0回答:1

这是我为 self 的可调用成员创建类型提示的尝试。

问题是如何在

Example
类中正确键入此函数,以便在下面的示例部分中,前两个示例有效,但第三个示例无效。

    def run(self, fn: Callable[[CallableMemberOfExample], dict], *args, **kwargs) -> dict:
在示例中,因此这个示例

from typing import Callable, TypeVar


CallableMemberOfExample = TypeVar("CallableMemberOfExample", bound="Example")

class Example:
    def test(self, *args, **kwargs) -> dict:
        return {"fn": "test", "args": args, "kwargs": kwargs}

    def another_test(self, *args, **kwargs) -> dict:
        return {"fn": "test2", "args": args, "kwargs": kwargs}

    def run(self, fn: Callable[[CallableMemberOfExample], dict], *args, **kwargs) -> dict:
        return fn(*args, **kwargs)


def yet_another_test(*args, **kwargs) -> dict:
    return {"fn": "test2", "args": args, "kwargs": kwargs}


# Example usage
example = Example()
example.run(example.test)  # Works
example.run(example.another_test)  # Works

example.run(yet_another_test) # This should be highlighted as type error but it doesn't.
python python-typing
1个回答
0
投票

Python 的类型注释系统无法表达您想要执行的操作。没有对应的类型。

© www.soinside.com 2019 - 2024. All rights reserved.