在Python中调用超类的类方法

2023-12-27

我正在开发一个 Flask 扩展,为 Flask 添加 CouchDB 支持。为了使它更容易,我已经子类化couchdb.mapping.Document so the store and load方法可以使用当前线程本地数据库。现在,我的代码如下所示:

class Document(mapping.Document):
  # rest of the methods omitted for brevity
  @classmethod
  def load(cls, id, db=None):
    return mapping.Document.load(cls, db or g.couch, id)

为了简洁起见,我省略了一些内容,但这是重要的部分。但是,由于类方法的工作方式,当我尝试调用此方法时,我收到错误消息

  File "flaskext/couchdb.py", line 187, in load
    return mapping.Document.load(cls, db or g.couch, id)
TypeError: load() takes exactly 3 arguments (4 given)

我测试过将呼叫替换为mapping.Document.load.im_func(cls, db or g.couch, id),并且它有效,但我对访问内部并不是特别高兴im_属性(即使它们已被记录)。有谁有更优雅的方法来处理这个问题?


我认为你实际上需要使用super这里。无论如何,这是调用超类方法的更简洁的方法:

class A(object):
    @classmethod
    def load(cls):
        return cls

class B(A):
    @classmethod
    def load(cls):
        # return A.load() would simply do "A.load()" and thus return a A
        return super(B, cls).load() # super figures out how to do it right ;-)


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

在Python中调用超类的类方法 的相关文章

随机推荐

  • 数据分析任务 - 自定义分析请求

    是否有任何选项可以为 SSIS 数据分析任务创建自定义配置文件请求 目前 SSIS 数据分析任务下有 5 个标准分析请求 列空比率配置文件请求 列统计资料请求 列长度 分布配置文件请求 列值分布配置文件请求 候选人关键资料请求 我需要添加另
  • 缩短 Angular 7 中的 SCSS 导入路径

    当我创建一个组件时 它嵌套得很深 如果我想导入一个共享的 scss 我必须用很长的路径导入它 例如 import app shared scss 这不会发生在 ts文件 我可以配置tsconfig json paths src src ap
  • 模板继承:没有依赖于模板参数的参数[重复]

    这个问题在这里已经有答案了 我在编译以下代码时遇到了这个错误 经过一些研究并阅读不同情况下的类似错误后 我想出了我需要的解决方案 但我并没有完全理解错误的根本原因和修复方法 template
  • 带有请求内容类型表单的 Http Post 在 Spring MVC 3 中不起作用

    代码片段 RequestMapping method RequestMethod POST headers content type application x www form urlencoded public ModelAndView
  • 捕获量词和量词算术

    首先 我要解释一下 这个问题既不是关于如何捕获组 也不是关于如何使用量词 这是我非常熟悉的正则表达式的两个功能 对于可能熟悉外来引擎中不寻常语法的正则表达式爱好者来说 这更像是一个高级问题 捕获量词 有谁知道正则表达式风格是否允许您捕获量词
  • 如何在 iOS 中实现 XMPP 房间的自动加入

    我想在XMPP群聊中自动加入房间 我从后端服务器创建了所有组 第一次加入房间 但是当我从 XMPP 在应用程序之外 断开连接并返回应用程序内部并重新连接 xmpp 时 我再次需要加入房间 在侧面应用程序中 一名用户已在多个房间中可用 因此无
  • eclipse 中的 java.lang.UnsupportedClassVersionError [重复]

    这个问题在这里已经有答案了 我真的不是一个Java程序员 所以我发布这个问题 在 Eclipse 项目的主类中抛出 java lang UnsupportedClassVersionError 异常 如果我注释掉该类的导入 它就会编译并运行
  • PHP中的Blowfish加密

    我正在为我的应用程序和网站编写加密 但我不知道如何正确加密 php 中的字符串 这段代码已经完成解密 function decrypt blowfish data key iv pack H substr data 0 16 key pac
  • CLGeocoder 反向地理代码位置“kCLErrorDomain 错误 2”

    我正在开发一个具有反向地理编码功能的 iOS 应用程序 当我第一次调用该函数时 一切都很好 第二次调用 使用完成调用的控制器的新实例 后 出现 Domain kCLErrorDomain Code 2 错误 这发生在模拟器和设备上 坐标有效
  • 当 JavaScript 中的数组对象递增时会发生什么?

    一个非常简单的问题 但我无法在任何地方找到答案 检查以下代码 var myArray 0 1 2 3 4 5 6 7 8 9 for i 0 i lt myArray length myArray console log Loop iter
  • 应该将列表添加到字典然后清除它的程序,首先清除它并将随后的空列表附加到字典中?

    class Matrix rowStorer generalPurposeList def init self row column self row row self column column To store away for a l
  • Github 搜索 API - 排除某些主题

    根据文档 我可以使用 从搜索 API 中排除某些内容 我对其进行了测试 例如 这适用于语言领域 但不适用于主题 根据文档 https docs github com en free pro team latest github search
  • C2DM:如何使用C2D_MESSAGE权限?

    我即将为我的应用程序实现 C2DM 但我发现文档 http code google com android c2dm writing apps关于如何编写清单有点令人困惑 清单代码示例包含以下内容
  • 使用联合登录 (OpenID) 从 Android 应用程序对 App Engine 进行身份验证

    我遵循了 Nick Johnson 的教程通过 Android App Engine 进行身份验证 http blog notdot net 2010 05 Authenticating against App Engine from an
  • HTML 范围输入滑块在移动设备上消失。为什么?

    为什么 HTML5 范围类型输入在移动设备上消失 看this http www html5tutorial info html5 range php页面 作为移动设备进行检查 我正在开发一个带有表单的简单网站 但需要该表单才能在移动设备上使
  • 使用高斯核估计向量的 pdf

    I am using Gaussian kernel to estimate a pdf of a data based on the equation where K is Gaussian kernel data is a given
  • 将现有 AWS Lambda 和 API Gateway 导出到 Cloudformation 模板

    如何将现有的已配置和测试的基础设施 包括 AWS Lambda 函数 API 网关 ElastiCache 集群 Cloudwatch 规则 导出到 Cloudformation 模板 我了解 Cloudformer 工具 但它支持有限数量
  • 运算符重载矩阵乘法

    我遇到的问题是如何让 K 的最内层循环经历正确的数字列 一个例子是 2x3 矩阵和 3x2 矩阵相乘 结果应该是一个 2x2 矩阵 但目前我不知道如何将 2 的值发送给运算符重载函数 它应该是 整数 k 0 k Matrix Matrix
  • 从 RavenDB 检索整个数据集合

    我有一个要求 我需要获取整个数据集合Users来自 RavenDB 并将检索到的结果集与另一组数据进行比较 这个特定集合中有近 4000 条记录 因为默认情况下 Raven 是安全的 所以我不断收到以下任一异常Number of reque
  • 在Python中调用超类的类方法

    我正在开发一个 Flask 扩展 为 Flask 添加 CouchDB 支持 为了使它更容易 我已经子类化couchdb mapping Document so the store and load方法可以使用当前线程本地数据库 现在 我的