html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/1097#issuecomment-523885536,https://api.github.com/repos/pydata/xarray/issues/1097,523885536,MDEyOklzc3VlQ29tbWVudDUyMzg4NTUzNg==,6213168,2019-08-22T12:32:37Z,2019-08-22T12:32:50Z,MEMBER,"> > Nevermind `__slots__`. I just tried and there is no noticeable speedup. > > I had thought the primary saving was memory (and fairly significant with lots of objects) It is one of the two savings - the other _theoretically_ being attribute access time. I think I'll go on with a pull request for further discussion.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,188113943 https://github.com/pydata/xarray/issues/1097#issuecomment-523878745,https://api.github.com/repos/pydata/xarray/issues/1097,523878745,MDEyOklzc3VlQ29tbWVudDUyMzg3ODc0NQ==,6213168,2019-08-22T12:12:42Z,2019-08-22T12:12:42Z,MEMBER,"Nevermind ``__slots__``. I just tried and there is no noticeable speedup. Code at https://github.com/crusaderky/xarray/commit/26e0477759ce2ef9d1f8fd9d1b23234741517c5a","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,188113943 https://github.com/pydata/xarray/issues/1097#issuecomment-523842624,https://api.github.com/repos/pydata/xarray/issues/1097,523842624,MDEyOklzc3VlQ29tbWVudDUyMzg0MjYyNA==,6213168,2019-08-22T10:17:27Z,2019-08-22T10:17:27Z,MEMBER,"There's also the argument that I would love, at some point, to migrate the xarray objects to use ``__slots__``. From a quick benchmark on my mac, that speeds up _every single attribute access_ by 7ns. I suspect that would very quickly add up. However, any subclass that defines extra attributes (as opposed to just methods) would break on the transition between ``__dict__`` an ``__slots__``.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,188113943 https://github.com/pydata/xarray/issues/1097#issuecomment-523834809,https://api.github.com/repos/pydata/xarray/issues/1097,523834809,MDEyOklzc3VlQ29tbWVudDUyMzgzNDgwOQ==,6213168,2019-08-22T09:53:00Z,2019-08-22T09:53:45Z,MEMBER,"There's also a funny, pickle-friendly hack that allows you to add methods to a Dataset without subclassing it - thanks to the ``Dataset.__getattr__`` magic: ``` def custom(self: Dataset, ...): ... ds = Dataset(...) ds.attrs['custom'] = partial(custom, ds) ds.custom(...) ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,188113943 https://github.com/pydata/xarray/issues/1097#issuecomment-523833526,https://api.github.com/repos/pydata/xarray/issues/1097,523833526,MDEyOklzc3VlQ29tbWVudDUyMzgzMzUyNg==,6213168,2019-08-22T09:49:00Z,2019-08-22T09:49:00Z,MEMBER,"The biggest problem is with all the Dataset methods _and accessors_ that return a DataArray, and vice versa. Anybody who wants to create a coupled pair of Dataset and DataArray subclasses will need to hunt down all methods and accessors that return the other class in the pair and override them. May I ask what are the practical use cases for subclassing? In several years worth of day-to-day use of xarray I always found that encapsulation felt much more natural.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,188113943