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/3582#issuecomment-559860016,https://api.github.com/repos/pydata/xarray/issues/3582,559860016,MDEyOklzc3VlQ29tbWVudDU1OTg2MDAxNg==,17710617,2019-11-29T18:24:49Z,2019-11-29T18:24:49Z,CONTRIBUTOR,"Ok thanks for the recommandations.
I'm thinking of using this kind of class to handle object creation:
```python
import xarray as xr
import motion
class Analogs:
def __new__(cls, ...):
array = xr.DataArray(...)
cls.verify(array)
return array
@staticmethod
def verify(array):
print(""verification..."")
@classmethod
def from_csv(cls, filename:str, ...):
array = xr.DataArray(filename, ...)
cls.verify(array)
return array
```
Let's say I define another `Markers` class for another type of data.
Is it possible that my accessor exposes different functions according to class e, g:
```python
@xr.register_dataarray_accessor(""foo"")
class DataArrayAccessor(object):
def __init__(self, xarray_obj: xr.DataArray):
self._obj = xarray_obj
def to_csv(self):
""""""
This function is exposed to all objects
but behave differently if it is a Markers or an Analogs
""""""
def marker_only_function(self):
""""""
This function is only exposed to
array created with the Marker class
""""""
def analog_only_function(self):
""""""
This function is only exposed to
array created with the Analog class
""""""
```
My ultimate goal is to have this kind of API:
```python
analogs = (
Analogs.from_csv(""filename.csv"")
.foo.center() # foo accessor generic method
.foo.rectify() # foo accessor specific method for Analogs object
.mean() # xarray method
)
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,530062582
https://github.com/pydata/xarray/issues/3582#issuecomment-559607756,https://api.github.com/repos/pydata/xarray/issues/3582,559607756,MDEyOklzc3VlQ29tbWVudDU1OTYwNzc1Ng==,17710617,2019-11-28T21:44:08Z,2019-11-28T21:44:08Z,CONTRIBUTOR,"> Is it because you would need a hook that is triggered by DataArray. __init__
Yes, I need to test some properties when creating the `DataArray` such as shape and dimensions properties.
> Why can't you initialise whatever you need to upon first access?
How do you do that?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,530062582