Python 中的静态方法和实例方法[重复]

2024-01-14

我可以将 Python 方法同时定义为静态方法和实例方法吗?就像是:

class C(object):
    @staticmethod
    def a(self, arg1):
        if self:
            blah
        blah

这样我就可以同时调用它:

C.a(arg1)
C().a(arg1)

目的是能够运行两组逻辑。如果作为实例方法访问,它将利用实例变量并执行某些操作。如果作为静态方法访问,则无需。


import functools

class static_or_instance(object):
  def __init__(self, func):
    self.func = func

  def __get__(self, instance, owner):
    return functools.partial(self.func, instance)

class C(object):
  @static_or_instance
  def a(self, arg):
    if self is None:
      print "called without self:", arg
    else:
      print "called with self:", arg

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

Python 中的静态方法和实例方法[重复] 的相关文章

随机推荐

  • 使用自定义库运行 Robot Framework 测试用例时,如何解决“NameError:全局名称 'x' 未定义”错误?

    在 Robot Framework 中运行测试用例时 我看到 NameError 全局名称 x 未定义 错误 以下是我的自定义库文件 根据 Bryan Oakley 的评论进行修改 import re def pass fail crite
  • 如何 grep 查找包含斜杠的字符串?

    我应该如何 grep 查找包含正斜杠的字符串 例如 正斜杠在 grep 中不是特殊字符 但可能在 sed Ruby 或 Perl 等工具中出现 不过 您可能想逃避字面上的句点 而且逃避斜杠也没有什么坏处 这应该适用于所有情况
  • 为什么新的 javascript 数组有“未定义”条目?

    下面是一个示例 演示了一个数组 当您填充该数组时 它也会获取其中所有类型的未定义条目 这是在 firefox 19 0 firebug 上发生的 不确定在其他浏览器上是否也会发生 基本流程 对象已初始化 最底层 它调用 负载 当ajax加载
  • Wordpress - 我如何知道菜单项是否有子项?

    我正在开发一个带有嵌套子菜单的 WordPress 主题 我需要使没有孩子的元素与有孩子的元素在视觉上有所不同 现在我有这个菜单 但这可能会改变 A a1 a2 B b1 b2 C 如您所见 A 和 B 有孩子 C 不需要 我需要它在 CS
  • 从 Google 脚本发送电子邮件时消息被阻止

    我有一份调查表 人们可以提交他们的工作时间 然后通过电子邮件将他们的回复发送给我 然后发送给 CC 的另外两个人 该脚本经我授权发送电子邮件 并且在很长一段时间内一直运行良好 直到几天前 现在我收到所有三封电子邮件的回复 说消息已被阻止 知
  • 无法创建 API 级别 10 的 Android 项目,因为没有可用的兼容主题

    我觉得我一定是忽略了这里的某些东西 我已经下载了API Level 10通过 SDK 管理器的 API 如果我尝试创建一个新项目 我不能 因为只有Holo主题可用 所有主题至少需要API Level 11 我没有其他主题选项 因此 下一步
  • PHP strtotime 对于 UTC 时间返回 false

    我和我的同事从使用 strtotime 的一些单元测试中获得了不同的结果 差异源于这一行 value strtotime 2050 05 01T20 10 29 410Z 在我的机器上 此结果返回以下内容 int 2535048629 而我
  • 使用 jQuery 仅获取特定行中的 值

    我有一个表 id docsTable 其行看起来与此类似 tr td align center td tr
  • 数据解析后重新加载 UICollection 视图

    我正在尝试动态更新 uicollectionview 我用了这个很棒的教程 https stackoverflow com questions 31735228 how to make a simple collection view wi
  • Python中信号处理程序和atexit处理程序的调用

    我有一段Python代码如下 import sys import signal import atexit def release print Release resources def sigHandler signo frame rel
  • 指针有什么意义? [复制]

    这个问题在这里已经有答案了 当我可以声明变量时 C 中的指针有什么意义 什么时候适合使用它们 通过 C 和 C 在向函数传递变量方面的差异 可以更好地理解指针 是的 您可以传递整个变量或仅传递指向它的指针 行话分别是按值或引用 但是 如果变
  • 在 Firebase iOS SDK 中,每次删除子项时都会触发 .childAdded。我怎样才能阻止这个?

    我将一些数据存储在 Firebase 数据库中名为 通知 的节点下 当我将事件观察器添加到 通知 并将事件类型设置为 childAdded 时 每次将子级添加到 通知 节点以及每次从 通知 节点删除子级时 都会调用完成处理程序 首先 我不明
  • 生成器和返回生成器的函数之间的区别

    我正在用生成器调试一些代码并提出这个问题 假设我有一个生成器函数 def f x yield x 和一个返回生成器的函数 def g x return f x 他们肯定会返回相同的东西 在 Python 代码中互换使用它们时会有什么区别吗
  • 使用 SQL 查询或 Laravel SQL 查询生成器创建表/列组合

    我有一个现有的产品变化方案 我想创建每个生产时间 数量和变化选项的组合 我将通过访问产品的数量 生产时间 变化和变化选项来创建选择表单 表组 id title 1 rug 表天数 id group id day 1 1 1 2 1 2 3
  • 更新应用程序后应用程序图标没有变化

    收到报告称 更新我们的应用程序后 跳板图标没有更新 需要关闭然后打开设备才能使更改生效 当从实时版本更新到测试版本 通过 iTunes 以及从旧 实时 版本更新到最新实时版本 通过设备上的应用商店 时 会发生这种情况 这种情况并不常见 但我
  • R 中的堆叠条形图再现

    我试图在 R 中重现该图 但没有成功 但更多的岁月里 这是数据 title 2016 phased 2017 phased 2018 phased 2019 fully loaded Pillar 1 minimum requirement
  • hive 查询的简单 oozie 示例?

    我正在尝试将一个简单的工作流程转换为 oozie 我尝试过查看 oozie 的示例 但它们有点令人难以接受 实际上 我想运行查询并将结果输出到文本文件 hive e select from tables gt output txt 我如何将
  • React Native 横向模式仅适用于一页

    在 React Native 中是否可以让应用程序以纵向模式运行 但让一个页面以横向模式运行 我知道在 Xcode 中你必须一开始就选择纵向或横向 所以我对如何使应用程序中除一个页面之外的所有页面都变成纵向有点困惑 在 React Navi
  • 如何让用户输入两次以上?

    我是 C 新手 我试图了解如何利用 C 通用输入 cin 我正在尝试编写一个程序来检查句子的字符数量和输入句子中的元音数量 我已经成功完成了这一任务 但是当我尝试让代码再次运行一次时 出现了问题 当它再运行一次时 就不再允许第二次输入 我的
  • Python 中的静态方法和实例方法[重复]

    这个问题在这里已经有答案了 我可以将 Python 方法同时定义为静态方法和实例方法吗 就像是 class C object staticmethod def a self arg1 if self blah blah 这样我就可以同时调用