用于类工厂/选择器的 python rtype 文档字符串/重构文本

2024-05-25

:rtype:指定这是返回对象的类型。

因此,当我创建对象时obj在下面的代码片段中,我收到来自 IDE 的警告:cls is not callable,因为 IDE 期望cls is object类型的SomeAbstractClass, 而且我要SomeAbstractClass itself.

IDE 是正确的,因为这是默认行为。但是我如何指定我返回的是一个类,而不是类的实例?

指定type代替SomeAbstractClass有点帮助,但这不是解决方案,因为没有进一步的内省可用。

def class_selector(data):
    """
    :rtype: SomeAbstractClass
    :return: Return some class based on given parameters
    """
    
    return get_from.get(data.name)
cls = class_selector(data)
obj = cls(data.more_data)

同时我通过添加解决了这个问题""":type: SomeAbstractClass"""创建对象后,但这并不能取消警告,这是一个肮脏的解决方案。

顺便说一句,我说的是 Python 2.x。


至于 2020 年,唯一正常工作的解决方案 - 使用 python3 注释:

一般来说,2020 年这是完全可以接受的

附上屏幕截图以演示正确的行为。 基本上,def factory(name) -> type[SomeAbstractClass]: or def factory(name) -> "type[SomeAbstractClass]":(对于无法导入名称的情况)工作完全正常。

仍然无法为较旧的 Python 版本找到解决方案(即避免使用注释)。但这并不是 2020 年的交易破坏者

如果有人想复制粘贴来测试替代方法,则代码与文本相同

class SomeAbstractClass:
    property_by_class = 1
    def __init__(self):
        self.property_by_object = 1


def factory(name) -> type[SomeAbstractClass]:
    hide_it = dict()
    class ActualClassImpl(SomeAbstractClass):
        pass
    hide_it.__setitem__(name, ActualClassImpl)
    return hide_it.__getitem__(name)

if __name__ == '__main__':
    a = factory('testclass')
    by_class_should_be_ok = a.property_by_class
    by_object_should_hint_error = a.property_by_object
    just_like_none_existing_property_hints = a.property_by_object_bad


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

用于类工厂/选择器的 python rtype 文档字符串/重构文本 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 如何创建粗体 UIFont

    我正在我的表格视图中进行一些自动换行 因为某些值太大 以至于超出了屏幕边缘 但是 字体 大小和粗体与表视图的默认设置不匹配 希望有人能帮助我解决这个问题 这就是我正在做的设置字段的操作 CGFloat tableView UITableVi
  • 如何实现类似于@Override java注解的东西?

    有了这个jdk代码 java lang Override java package java lang import java lang annotation Target ElementType METHOD Retention Rete
  • c# .NET MVC 4 - 如何创建使用 Ninject 服务的 Quartz 作业?

    我正在使用 NET MVC 4 所有服务都是使用 Ninject 注入的 我正在尝试使用 Quartz 来安排工作 目前 职位登记在Global asax如下 Global asax protected void Application S
  • MySQL 获取最高平均条目

    我正在尝试编写一个 mysql 查询来返回平均课程评分最高的前 3 门课程 我有两个表 评级和课程 评分表 courseId rating 1 6 2 2 1 4 2 5 3 3 4 0 6 0 课程表 courseId cnum cnam
  • Apple 登录无法在 iOS 14 模拟器上运行

    当我尝试登录 iOS 14 中的模拟器时 加载旋转器会一直旋转 Apple 开发者论坛上有一个主题here https developer apple com forums thread 651533但没有解决方案 苹果也没有回应 我当然可
  • 不确定我的自动编码器神经网络从 Keras 预测中给出的结果

    我正在尝试构建一个自动编码器神经网络 用于在单列文本列表中查找异常值 我的输入有 138 行 它们看起来像这样 amaze header 2 png amaze header png circle shape xml disableable
  • 如何从使用 exec() 的存储过程创建复杂类型?

    我想通过动态构造并执行的查询创建一个复杂类型 以便在实体管理器中使用exec 是否可以 既然我正在写一个过滤器 如果不可能的话你会做什么 另外 我正在使用 linq 进行评估 但过滤器需要许多表及其寄存器 因此效率是一个问题 谢谢 是的 您
  • 使用适用于 API v2 的 Dropbox Java SDK 时出现 SSLHandshakeException

    In a XPages我想使用的应用程序适用于 API v2 的 Dropbox Java SDK 2 1 2 获取有关我的 Dropbox 帐户的信息 以下代码用于检索相应的帐户对象 String atoken DbxRequestCon
  • Ruby 空白:{ :a => 1 } 比 {:a => 1} 更好吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 看看其他人的代码 在花括号块内包含额外的空格似乎很常见 这是有原因的吗 对我来说 这似乎增加了额外的击键 从而增加了丑陋 特别是当事情嵌套时 l
  • 通过 AJAX 加载的页面上的 reCAPTCHA 字段不会加载。建议?

    实例 没有 AJAX http utsarotaract org inc email php 使用 AJAX 单击给我们发送电子邮件链接 http utsarotaract org contact php 当我查看源页面时 一切正常 但是当
  • Selenium/BeautifulSoup - WebScrape 该字段

    我的代码运行良好 并打印除带有下拉列表的行之外的所有行的标题 例如 如果单击第 4 行 则会出现一个下拉菜单 我实现了一个 尝试 理论上会单击下拉菜单 然后拉出标题 但是 当我执行 click 并尝试打印时 对于具有这些下拉列表的行 它们不
  • Symfony 无法生成路由到样式表的 URL

    我在同一个文件夹中有两个 CSS 文件 具有相同的访问权限 在同一个 Twig 文件中进行测试时 一个 CSS 文件会生成该文件的 URL 并完美加载 而另一个会给出错误 Error 模板渲染期间抛出异常 无法为命名路由 assetic a
  • 使用 python 从 PC 麦克风获取音频输入

    我使用的是 ubuntu 16 04 我必须从我的电脑麦克风获取音频输入 我正在使用 python 3 我使用 pyalsaaudio 我从某处复制了代码 这是代码 import alsaaudio time audioop inp als
  • excel公式剥离html

    我想从文本值的左侧和右侧剥离所有 html 我有这个
  • 如何使用批处理文件同时运行多个python脚本

    我有很多 python 脚本 通过单击它们单独运行每个脚本是一件痛苦的事情 如何制作一个批处理文件来一次运行它们 只需制作一个像这样的脚本作为每个任务的后台 在 Windows 上 start B python script1 py sta
  • Android 的互补滤波器(陀螺仪 + 加速器)

    最近我做了一些研究 使用加速度计 陀螺仪来使用这些传感器来跟踪智能手机 而无需 GPS 的帮助 请参阅这篇文章 基于陀螺仪和加速度计的室内定位系统 https stackoverflow com questions 7499959 indo
  • 使用系统 python osx 进行 pip

    我使用 macports 安装了 python26 所以我的系统上正确的 python 是 opt local bin python 然而 当我这样做时 sudo pip install
  • 为什么我会看到“TypeError:字符串索引必须是整数”?

    我正在学习 Python 并试图将 GitHub 问题转化为可读的形式 使用以下建议如何将 JSON 转换为 CSV https stackoverflow com questions 1871524 convert from json t
  • 原始值与参考值

    我读过一本名为 Web 开发人员的专业 Javascript 的书 其中写道 变量由引用值或原始值分配 引用值是存储在内存中的对象 然后它没有提到原始值是如何存储的 所以我猜它没有存储在内存中 基于此 当我有这样的脚本时 var foo 1
  • 用于类工厂/选择器的 python rtype 文档字符串/重构文本

    rtype 指定这是返回对象的类型 因此 当我创建对象时obj在下面的代码片段中 我收到来自 IDE 的警告 cls is not callable 因为 IDE 期望cls is object类型的SomeAbstractClass 而且