python - python初始化时如何访问父类?

标签 python decorator introspection

如何找出我正在哪个类中初始化装饰器?这是有道理的,因为装饰器尚未绑定(bind)到类,所以我无法找到这一点,但是有没有办法解决这个问题?

class A(object):
    def dec(f):
                # I am in class 'A'
        def func(cls):
            f(cls)
        return func

    @dec
    def test(self):
        pass

我需要知道我属于哪一类(由注释行表示)。

最佳答案

我认为这是不可能的。在定义测试的那一刻,该类还不存在。

当Python遇到

class A(object):

它创建一个新的命名空间,在其中运行在类定义中找到的所有代码(包括 test() 的定义和对装饰器的调用),完成后,它创建一个新的类对象并放入代码执行后留在命名空间中的所有内容都放入此类中。

所以当装饰器被调用时,它还不知道任何事情。此时,test 只是一个函数。

关于python - python初始化时如何访问父类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956994/

相关文章:

c++ - 如何在运行时检测符号是否被剥离?

exception - 如何访问 `clojure.lang.Compiler$CompilerException`实例的行变量?

python - pandas DataFrames 某些列之间的差异

python - Kivy 将按钮文本复制到剪贴板

python - IDLE 在我的 Mac 上崩溃

Python类装饰器

php - 我可以用 PHP 打印整个程序状态吗?

Python Selenium - 尝试按类名查找元素时出错

javascript - Angular 5 : Using Service from inside Custom Decorator Function

design-patterns - 什么时候需要装饰器图案?