[Python-Dev] Replacing self.dict in init (original) (raw)
Raymond Hettinger raymond.hettinger at gmail.com
Sat Mar 24 12:20:22 EDT 2018
- Previous message (by thread): [Python-Dev] Replacing self.__dict__ in __init__
- Next message (by thread): [Python-Dev] Replacing self.__dict__ in __init__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mar 24, 2018, at 7:18 AM, Tin Tvrtković <tinchester at gmail.com> wrote:
it's faster to do this: self.dict = {'a': a, 'b': b, 'c': c} i.e. to replace the instance dictionary altogether. On PyPy, their core devs inform me this is a bad idea because the instance dictionary is special there, so we won't be doing this on PyPy. But is it safe to do on CPython?
This should work. I've seen it done in other production tools without any ill effect.
The dict can be replaced during init() and still get benefits of key-sharing. That benefit is lost only when the instance dict keys are modified downstream from init(). So, from a dict size point of view, your optimization is fine.
Still, you should look at whether this would affect static type checkers, lint tools, and other tooling.
Raymond
- Previous message (by thread): [Python-Dev] Replacing self.__dict__ in __init__
- Next message (by thread): [Python-Dev] Replacing self.__dict__ in __init__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]