3 ms·
That's a silly example. If you're making billions of integers, use NumPy. If it's just one pass, use a generator. If you're making lots of objects with more int
by xapata 9y ago
That's a silly example. If you're making billions of integers, use NumPy. If it's just one pass, use a generator. If you're making lots of objects with more interesting attributes, the attribute storage will overwhelm the difference the instance dicts make.
My point was not that __slots__ does nothing, but that there are more important things to worry about.
- marvy 9y agoSuppose I want to run algorithms on large arrays of 2D points while maximizing readability. I want to store the x and y coordinates using Python integers so I don't have to worry about overflow errors, but I expect that most of the time the numbers will be small and this is "just in case". I claim that in this case, __slots__ is exactly the right thing to worry about.
- xapata 9y agoIt's hard for me to imagine that situation coming up, but yes, __slots__ does indeed have a purpose. BTW, have you considered using the complex type to handle that for you? It's 2d and ints should be safe in float representation. If it overflows it'll crash nicely.
- marvy 9y agoGood one. But let's say I want something mutable, so complex won't do.