python:简单装饰函数的类名称空间

2024-09-25 04:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python中的decorator有点陌生,正在使用一个简单的decorator,它应该检查类的状态(当某个依赖的函数第一次被调用时执行一次操作)。我的问题是,我想让decorator函数也知道self中的所有内容,并将实际函数作为'argument'(?)在

class myClass(object):
    __init__(self):
        self.__isFoo = False
        self.__baz = 0

    def doFoo(self):
        ...  
        self.__isFoo = True

    def fooInit(self,func):
        if not self.__isFoo:
            self.doFoo()
        return func

    @property
    @fooInit
    def getBaz(self):
        return self.__baz

但是,对于这个,我得到一个错误

^{pr2}$

我有点理解,因为它只是 自我.fooinit( self.getBaz公司) 如果我对装饰师的理解正确,或者?在

所以我现在有点迷茫了,我该如何以一种简单的方式定义decorator,它也知道类名称空间中的其他对象?在


Tags: 函数self内容return状态defdecoratorbaz
1条回答
网友
1楼 · 发布于 2024-09-25 04:20:07

按照@aruisdante的建议,我设法找到了一个合适的装修工

def fooInit(func):
    def _wrapped(self,*args, **kwargs):
        if not self.__isFoo:
            self.fooInit()
            return func(self,*args, **kwargs)
    return _wrapped

(在我的类中定义)

相关问题 更多 >