python - 在 Python 装饰器中获取类

标签 python

在这段代码中:

def online_only(func, self):
    def f(*args, **kwargs):
        if self.running:
            return func(*args, **kwargs)
        else:
            return False
    return f

class VM(object):
   @property
   def running(self):
       return True

   @property
   @online_only
   def diskinfo(self):
       return True

我希望 diskinfo 仅在 VM.running 返回 True 时运行。如何让 online_only 能够读取 self.running

最佳答案

self 作为第一个参数传递给包装函数,所以在 f 中只对第一个参数进行特殊处理:

def online_only(func):
    def f(self, *args, **kwargs):
        if self.running:
            return func(self, *args, **kwargs)
        else:
            return False
    return f

关于python - 在 Python 装饰器中获取类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309124/

相关文章:

python - 编写类似开关的正则表达式的简单方法

python - 将 LDA 结果从 Pandas 文本列向量化为多列

python - 线程 django-main-thread 中的异常

python - 计算列表python中的列表出现次数

python - Pygame 将光标更改为操作系统光标

python - 如何在 Python 中将 Sql Server 结果导出到 Excel

python - Matplotlib:具有透明颜色的填充等高线图

python - 用小数秒将 excel 时间导入 Pandas

python - 如何在 Pandas 数据框中设置时间戳的偏移量?

python - Matplotlib 增加 x 轴上点之间的间距