我应该写什么函数/类才能LOAD_CLASSDEREF为字节码指令?
我已经能够找到导致LOAD_BUILD_CLASS、LOAD_CONST、LOAD_GLOBAL、LOAD_FAST、LOAD_ATTR、LOAD_DEREF、LOAD_NAME、字节码的函数/类,但是什么函数/类会给出LOAD_CLOSURE和LOAD_CLASSDEREF?
>LOAD_CLASSDEREF
用于类主体访问闭包变量,因此让类主体访问闭包变量:
def foo():
x = 3
class Bar:
print(x)
然后,Bar
的代码对象将使用LOAD_CLASSDEREF
。根据您的 Python 版本,您可能需要从foo.__code__.co_consts
中挖掘代码对象,并直接对该代码对象调用dis.dis
以查看dis.dis
输出中的操作码。
您还可以在字节码中看到foo
的LOAD_CLOSURE
。