Message218392
FYI, __new__() is a staticmethod to accommodate subclassing. Several things that happen at instantiation-time (when __new__() is called), including memory allocation, are tied to the class that is passed in and may be different for subclasses. For example:
class Spam(int):
def __new__(cls, value):
self = super().__new__(Spam, value)
self._eggs = 10
return self
Spam is passed in instead of int (as would happen if it were a classmethod), resulting in extra memory being allocated for _eggs (and for __dict__ among other things). |
|
Date |
User |
Action |
Args |
2014-05-13 01:03:38 | eric.snow | set | recipients:
+ eric.snow, jcea, steven.daprano, docs@python, Jurko.Gospodnetić, eryksun |
2014-05-13 01:03:38 | eric.snow | set | messageid: <1399943018.5.0.638087447386.issue21415@psf.upfronthosting.co.za> |
2014-05-13 01:03:38 | eric.snow | link | issue21415 messages |
2014-05-13 01:03:38 | eric.snow | create | |
|