On Thursday, April 4, 2019 at 1:17:02 PM UTC-5, adam....@gmail.com wrote:

> Thanks for the response. I was meaning to write back earlier, but I've been 
> spending my free Python time in the evenings reimplementing what I'm doing to 
> work more correctly. I'm guessing before the code object representing the 
> class body gets run, __build_class__ is establishing various dunders such as 
> __name__, __qual_name__, and __module__. I haven't fully penetrated that, but 
> I also took an embarrassingly long amount of time to fully comprehend 
> LOAD_NAME versus LOAD_FAST versus LOAD_GLOBAL...

I was blabbing on this while I was away from my examples so I did botch this up 
a bit. I guess when building the class, __name__ will get set beforehand, it 
the program's setting __qualname__ and __module__ from there. Something I don't 
really understand from a code generation perspective is the switch over to 
STORE_NAME for class methods. When I disassemble regular function definitions, 
I expect to see the result of MAKE_FUNCTION stored using STORE_FAST. However, 
in the code generated from a class body, it's a STORE_NAME. I know this is 
signifying to the interpeter not to rely on sourcing __init__ locally, but I 
don't understand why it suddenly has decided that now that it's in a class body.

I'm in a situation where I am have to generate those opcodes so I'm trying to 
figure out what the magic switch is--if it isn't just that I'm inside a class 
definition now.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to