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 中的静态方法和实例方法[重复] 的相关文章

  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • 使用自定义库运行 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 这样我就可以同时调用