如何使用 Pylance 以编程方式从 Python 项目中提取类型信息?

2024-03-09

我正在开发一个项目,需要分析 Python 代码库并以编程方式提取特定变量的类型信息。我对使用 Pylance(或底层 Pyright)很感兴趣,因为我发现它与 VS Code 一起使用时的类型推断非常准确。

有没有办法以编程方式使用 Pylance 或 Pyright 来分析 Python 代码并检索类型信息?

到目前为止我所考虑的:

语言服务器协议 (LSP): Pylance 使用语言服务器协议 (LSP) 作为语言服务器运行。我想过设置一个LSP客户端,启动Pylance语言服务器,然后发送LSP请求来获取类型信息。但是,我不确定这种方法的具体细节。

直接使用 Pyright: 由于 Pyright 是 Pylance 背后的核心类型检查器,因此我考虑直接将其用作库来分析代码。但我不确定内部 API 以及如何以编程方式利用它们来实现此目的。

替代工具: 我知道还有其他工具(例如 mypy)可能提供用于分析 Python 代码的编程 API。但我对 Pylance/Pyright 特别感兴趣,因为它们在类型推断方面非常准确。

手动解析: 作为最后的手段,我考虑使用 ast 库手动解析 Python 代码以提取类型提示。这不会提供推断类型,但它可能是一个起点。

一个简单的例子:

class Person:
    def __init__(self, name: str, age: int):
        self.name = name
        self.age = age
        
    def get_age(self) -> int:
        return self.age

def add_numbers(a: int, b: int) -> int:
    return a + b

def main():
    # Create a Person object
    person = Person("Alice", 30)
    
    # Invoke get_age method and print the result
    age = person.get_age()
    print(f"{person.name}'s age is {age} years old.")

if __name__ == "__main__":
    main()

对于“age = person.get_age()”行,对于 person 变量,我想知道它的类型为“Person”。我必须以编程方式执行此操作。

有没有人尝试过类似的事情或对如何实现这一目标有见解?任何指导或指示将不胜感激!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Pylance 以编程方式从 Python 项目中提取类型信息? 的相关文章

  • 将字符串转换为浮点数列表(在 python 中)

    出于数据存储的目的 我尝试从 txt 文件恢复浮点列表 从字符串中可以看出 a 1 3 2 3 4 5 我想恢复 a 1 3 2 3 4 5 我期待一个简单的解决方案 例如list a 但我找不到类似的东西 Use the AST模块 Ex
  • 如何使用 tkinter 使用网格功能显示不同的图像?

    我想使用显示文件夹中的图像grid 但是当我尝试使用以下代码时 我得到了迭代单个图像的输出 My code def messageWindow win Toplevel path C Users HP Desktop dataset for
  • 用于读取类似 CSV 行的 Python 正则表达式

    我想解析传入的类似 CSV 的数据行 值用逗号分隔 逗号周围可能有前导和尾随空格 并且可以用 或 引用 例如 这是有效的行 data1 data2 data3 data4 data5 但这是格式错误的 data1 data2 da ta3
  • MacOS Big Sur 中的 NPM 错误“找不到 Python 可执行文件”

    我已经花了整整一周的时间寻找这个问题的答案 但没有成功 我查看了每个 StackOverflow 帖子 Google 的每一篇文章以及我能找到的每个相关的 Github 问题 大多数相关错误似乎都比较旧 所以我想知道我的问题是否由于我使用的
  • 如何使用 Pycharm 运行 fast-api 服务器?

    我有一个简单的 API 函数 如下所示 from fastapi import FastAPI app FastAPI app get async def read root return Hello World 我正在使用启动服务器uvi
  • 如何检查给定的数字是否是2的幂?

    下面的代码不适用于某些输入 a i set 1 while i lt 10000 a add i i lt lt 1 N int input if N in a print True else print False 我最初的想法是检查每个
  • matplotlib - 将文本包装在图例中

    我目前正在尝试绘制一些pandas数据通过matplotlib seaborn 然而我的一个专栏标题特别长 拉长了情节 考虑以下示例 import random import pandas as pd import matplotlib p
  • Python SQLite3 SQL注入漏洞代码

    我知道下面的代码片段由于 format 的原因很容易受到 SQL 注入的攻击 但我不知道为什么 有谁明白为什么这段代码容易受到攻击以及我从哪里开始修复它 我知道这些代码片段使输入字段保持打开状态 以便通过 SQL 注入执行其他恶意命令 但不
  • 关于具有自定义损失的 3 输出 ANN 的加权

    我正在尝试定义一个自定义损失函数 它在回归模型中接收 3 个输出变量 def custom loss y true y pred y true c K cast y true float32 Shape batch size 3 y pre
  • Python正则表达式替换引号中的文本(引号本身除外)

    例如 我有一个测试字符串 content I opened my mouth Good morning I said cheerfully 我想使用正则表达式删除双语音标记之间的文本 但不删除语音标记本身 所以它会返回 I opened m
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • 如何停止 PythonShell

    如何终止 停止 Node js 中 PythonShell 执行的 Python 脚本的执行 我在交互模式下运行 输出通过 socket io 发送到给定的房间 如果没有更多的客户端连接到这个房间 我想停止 python 脚本的执行 这是我
  • 使用 Popen 打开进程并获取 PID

    我正在开发一个漂亮的小功能 def startProcess name path Starts a process in the background and writes a PID file returns integer pid Ch
  • 在 Keras 中使用有状态 LSTM 训练多变量多级数回归问题

    我有时间序列P过程 每个过程的长度各不相同 但都有 5 个变量 维度 我试图预测测试过程的估计寿命 我正在用有状态的方法来解决这个问题LSTM在喀拉斯 但我不确定我的训练过程是否正确 我将每个序列分成长度的批次30 所以每个序列都是这样的形
  • 哈希 freezeset 与排序元组

    在 Python 中 给定一组可比较的 可散列的元素s 散列是否更好frozenset s or tuple sorted s 这取决于你在做什么 创建一个更快frozenset 比排序tuple but frozenset占用的内存比tu
  • 数据类和属性装饰器

    我一直在阅读 Python 3 7 的数据类 作为命名元组的替代品 我通常在必须将数据分组到结构中时使用它 我想知道数据类是否与属性装饰器兼容 以便为数据类的数据元素定义 getter 和 setter 函数 如果是这样 是否在某处进行了描
  • 根据标签位置计算 Pandas DataFrame 的索引

    我正在尝试计算标签的索引Pandas https pandas pydata org DataFrame在每一列中 基本上我有以下内容DataFrame d col1 label1 label2 label3 col2 label2 lab
  • 从函数在 python 3 中创建全局变量

    我想知道为什么在函数结束后我无法访问变量 variable for raw data 代码是这样的 def htmlfrom Website URL import urllib request response urllib request
  • model.predict() 返回类而不是概率

    Hello 我是第一次使用 Keras 我训练并保存了一个模型 作为 json 文件及其权重 该模型旨在将图像分为 3 个类别 我的编译方法 model compile loss categorical crossentropy optim
  • 基于 Web 请求在 Airflow 上运行作业

    我想知道是否可以在通过 HTTP 收到请求时执行气流任务 我对 Airflow 的调度部分不感兴趣 我只是想用它来代替芹菜 因此 示例操作如下所示 用户提交一份表格 请求某些报告 后端接收请求并向用户发送请求已收到的通知 然后后端使用 Ai

随机推荐

  • “暂停”具有属性的线程

    我有一个 TThread 对象 希望能够通过程序主窗体上的按钮启动 停止线程 我一直在研究实现这一点的方法 到目前为止我有以下想法 当用户单击 停止 时终止并释放线程 并在单击 开始 时创建一个新线程 使用 sleep 来延迟线程 我不想这
  • 输入 UITextField 时 iPhone 键盘不出现

    这一定是某种我看不到的新手错误 如果我能得到关于检查什么或去哪里的提示 我将不胜感激 我遵循了一个具有 UITextField 的 iPhone 教程 确保我连接了文本字段的 IBOutlet 并且它似乎可以正确编译 没有错误或警告 但是当
  • 使用 PhoneGap 进行闪烁导航的 Jquery Mobile 代码

    我相信这篇文章可以解决我的问题在页面之间导航时闪烁 https stackoverflow com questions 5953753 flickering when navigating between pages 具体来说 docume
  • 子类型的关系数据建模

    我正在学习关系模型和数据建模 我对子类型有些困惑 我知道数据建模是一个迭代过程 有许多不同的建模方法 但我不知道如何在不同的选项之间进行选择 Example 假设我们想要建模粒子 分子 原子 质子 中子 电子 为了简单起见 我们忽略夸克和其
  • 如何通过 gradle externaNativeTool 将特定参数(例如:opencv_dir)传递给 CMake?

    我正在尝试在 Android studio 中作为 externalNativeBuildTool 执行 CMake 脚本 它具有 OpenCV 依赖项 我知道我可以在脚本中静态定义 OpenCV 并且我不想在 android studio
  • 是否可以在 C++ 中为变量使用动态名称

    如果可能的话 我想使用动态名称 这是一个关于我的意思的例子 int sol1 sol2 for int i 1 i lt 3 i sol i i i return max sol1 sol2 With sol i I mean sol1在第
  • XCTests 无法间歇性地在模拟器中启动应用程序

    有没有人经历过并解决过 XCTests 间歇性无法在模拟器中启动应用程序进行 UI 测试 XCUI 我正在快速通道中运行 不同的测试似乎每次测试运行都失败 操作系统 10 12 3 iOS模拟器 10 0 Xcode 8 2 1 快车道2
  • wget 破坏了内容配置

    我正在尝试从以下网站下载通过 Content Disposition attachment 发送的 kml 文件 http waterwatch usgs gov index php m real w kml r us regions ia
  • 我应该在 PHP 代码中使用 @ 吗?

    如果我使用 在我的代码中 它会影响性能吗 这篇文章有助于回答您的问题 http anvilstudios co za blog php how to ignore errors in a custom php error handler h
  • 在 Perl 中将变量链接到类属性

    这个问题源于另一个问题 Perl中彻底销毁一个对象的所有痕迹 https stackoverflow com questions 31841484 completely destroy all traces of an object in
  • 在构建jenkins项目时,10分钟后发生超时错误

    我正在使用 jenkins 构建我的 git 远程项目 问题是日志显示 10 分钟后超时 开始接收对象 并在 56 时发生了一些事情 编辑您的作业配置 然后在 git 插件部分下 点击 添加 单击 高级克隆行为 在 克隆和获取操作的超时 以
  • 在一个 APK 文件中的不同 Firebase 项目(运行时)之间切换

    我们正在将 Firebase 消息传递集成到 Android 应用程序中以用于推送通知 我们将使用服务器端的 SNS 向 Firebase 发送推送消息 以下是我们的用例 我们有三台服务器 QA STG 和 PRODUCTION 我们在 f
  • 为什么程序集绑定重定向在我的网站中不起作用?

    我有一个网站项目 我使用内置的开发 Web 服务器从 Visual Studio 运行 网站的虚拟路径设置为 web config 包含一个运行时元素
  • Asp.net MVC 授权属性,重定向到自定义“无权限”页面

    Asp net MVC2 确实重定向到登录页面response 302当经过身份验证的用户没有权限时 我想分成两个动作 如果用户未经过身份验证 则执行其操作 重定向到登录页面 如果用户已通过身份验证但没有所需的权限 则返回适当的 http
  • ASP.NET MVC OnException - 需要尝试捕获吗?

    我对 MVC ASP NET 还很陌生 我读到了有关 OnException 重写方法的内容 我在想 我是否应该在控制器或模型上放置 try catch throw 以便调用 OnException 或者 我不需要 try catch 如果
  • 如何在 netbeans 中使用 Groovy 2.0

    我想用groovy 2 0 in Netbeans 7 1 2因为我想使用静态类型检查 默认情况下 Netbeans 使用 Groovy 1 6 4 库 groovy all jar 如何让 Netbeans 使用 Groovy 2 0 我
  • 如何使用 grunt.js 复制没有完整路径的文件?

    我想复制内容 pckg to dist与 grunt js 结构如下 folder1 folder2 pckg myfolder myfiles myfiles dist myfolder
  • SSRS 报告 - 动态连接字符串和参数

    我正在构建一个 SSRS 报告门户来运行各种报告 要求之一是将数据库连接字符串 服务器名称 数据库 用户名和密码 动态传递到报表 请让我知道如何实现这一目标 我是 SSRS 报告的新手 谢谢 斯里 您应该确保您的数据源已嵌入到报告中 您可以
  • 按照之前解决冲突的方式解决 git rebase 冲突

    我决定从其他旧版本控制系统追溯提交 Git 中从未有过的历史记录 因此 我创建了一个孤立分支 newroot 并将来自其他版本控制系统的提交导入到其中 以下问题在 Git 中的根提交之前插入一个提交 https stackoverflow
  • 如何使用 Pylance 以编程方式从 Python 项目中提取类型信息?

    我正在开发一个项目 需要分析 Python 代码库并以编程方式提取特定变量的类型信息 我对使用 Pylance 或底层 Pyright 很感兴趣 因为我发现它与 VS Code 一起使用时的类型推断非常准确 有没有办法以编程方式使用 Pyl