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/1281#issuecomment-281881318,https://api.github.com/repos/pydata/xarray/issues/1281,281881318,MDEyOklzc3VlQ29tbWVudDI4MTg4MTMxOA==,1217238,2017-02-23T03:15:18Z,2017-02-23T03:15:18Z,MEMBER,"> edit: I guess it should return a modified object rather than acting as an in-place operation...is copying appropriate here? How is this usually handled? The standard thing to do would be to do a shallow copy of the original object (which copies everything except array data) and then update `attrs` inplace, e.g., ``` def update_attrs(self, *args, **kwargs): out = self.copy(deep=False) out.attrs.update(*args, **kwargs) return out ``` I like this idea, though I would call it `assign_attrs` rather than `update_coords`, to mirror `assign` and `assign_coords`. I encourage you to get started on a pull request! > Also, specifying default attrs for all data arrays of a dataset (like missing_data/ _FillValue/ ...) would be nice... Not sure if this is currently possible? I don't think there's any way to do this currently without a loop. I would say we're open to proposals, which you should probably open another issue to discuss :).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,209523348