29 lines
778 B
Cython
29 lines
778 B
Cython
|
cdef class NDFrameIndexerBase:
|
||
|
"""
|
||
|
A base class for _NDFrameIndexer for fast instantiation and attribute access.
|
||
|
"""
|
||
|
cdef:
|
||
|
Py_ssize_t _ndim
|
||
|
|
||
|
cdef public:
|
||
|
str name
|
||
|
object obj
|
||
|
|
||
|
def __init__(self, name: str, obj):
|
||
|
self.obj = obj
|
||
|
self.name = name
|
||
|
self._ndim = -1
|
||
|
|
||
|
@property
|
||
|
def ndim(self) -> int:
|
||
|
# Delay `ndim` instantiation until required as reading it
|
||
|
# from `obj` isn't entirely cheap.
|
||
|
ndim = self._ndim
|
||
|
if ndim == -1:
|
||
|
ndim = self._ndim = self.obj.ndim
|
||
|
if ndim > 2:
|
||
|
raise ValueError( # pragma: no cover
|
||
|
"NDFrameIndexer does not support NDFrame objects with ndim > 2"
|
||
|
)
|
||
|
return ndim
|