在dis.dis之后,我如何获得LOAD_CLASSDEREF指令?



我应该写什么函数/类才能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输出中的操作码。

您还可以在字节码中看到fooLOAD_CLOSURE

最新更新