[Python-Dev] is __self__ an implementation detail

2022年3月28日 08:42:56 -0700

A gentoo developer reported a symlink loop problem in reportlab's setup.py 
where we search for specific headers.
The 'fixed' function looks like this
def findFile(root, wanted, followlinks=True):
 visited = set()
 for p, D, F in os.walk(root,followlinks=followlinks):
 #scan directories to check for prior visits
 #use dev/inode to make unique key
 SD = [].append
 for d in D:
 dk = os.stat(pjoin(p,d))
 dk = dk.st_dev, dk.st_ino
 if dk not in visited:
 visited.add(dk)
 SD(d)
 D[:] = SD.__self__ #set the dirs to be scanned
 for fn in F:
 if fn==wanted:
 return abspath(pjoin(p,fn))
the fix is reported to have worked, but the developer is querying the lifting 
of SD.append using the construct
SD = [].append
loop involving
 appends to the list
.....
D[:] = SD.__self__
his objection was that using __self__ might be implementation sensitive.
I cannot tell from the documentation (eg https://docs.python.org/3.10/reference/datamodel.html) if these magic methods are part of python or of the implementation. On the other hand as a longtime python programmer I wonder if such simple cases are already optimized out in the produced bytecode; for years I have been avoiding s += 'string' and only recently found out that it was handled as a special case.
--
Robin Becker
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/3TAF3LR35HRRE6LD7XQ7O4BXPNLVXFVX/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to