@@ -647,10 +647,19 @@ class CFAccessor:
647647
648648 def __init__ (self , da ):
649649 self ._obj = da
650- self ._defined_cell_measures = tuple (
651- set (_CELL_MEASURES + tuple (self .cell_measures ))
652- )
650+ self ._all_cell_measures = None
651+
652+ def _get_all_cell_measures (self ):
653+ """
654+ Get all cell measures defined in the object, adding CF pre-defined measures.
655+ """
656+
657+ # get all_cell_measures only once
658+ if not self ._all_cell_measures :
659+ self ._all_cell_measures = set (_CELL_MEASURES + tuple (self .cell_measures ))
653660
661+ return self ._all_cell_measures
662+
654663 def _process_signature (
655664 self ,
656665 func : Callable ,
@@ -830,7 +839,7 @@ def describe(self):
830839
831840 text += "\n Cell Measures:\n "
832841 measures = self .cell_measures
833- for key in sorted (self ._defined_cell_measures ):
842+ for key in sorted (self ._get_all_cell_measures () ):
834843 text += f"\t { key } : { measures [key ] if key in measures else []} \n "
835844
836845 text += "\n Standard Names:\n "
@@ -1074,7 +1083,7 @@ def check_results(names, k):
10741083 check_results (names , k )
10751084 successful [k ] = bool (names )
10761085 coords .extend (names )
1077- elif k in self ._defined_cell_measures :
1086+ elif k in self ._get_all_cell_measures () :
10781087 measure = _get_measure (self ._obj , k )
10791088 check_results (measure , k )
10801089 successful [k ] = bool (measure )
0 commit comments