class_docstr: This mixin changes `__getattr__` to attempt a `__getitem__` call.
  
  Classes that include this mixin gain enhanced functionality for the
  behavior of attribute access like `obj.foo`: if `foo` is not an attribute
  of `obj`, obj['foo'] will be attempted, and the result returned.  To make
  this behavior safe, classes that include this mixin must define a class
  attribute `_PROTECTED_KEYS` that defines the attributes that are accessed
  within `__getitem__`. For example, if `__getitem__` is defined as
  `return self._data[key]`, we must define `_PROTECTED_KEYS={'_data'}`.
class_docstr_tok: ["This","mixin","changes","`","__getattr__","`","to","attempt","a","`","__getitem__","`","call",".","Classes","that","include","this","mixin","gain","enhanced","functionality","for","the","behavior","of","attribute","access","like","`","obj.foo","`",":","if","`","foo","`","is","not","an","attribute","of","`","obj","`",",","obj","[","'foo","'","]","will","be","attempted",",","and","the","result","returned",".","To","make","this","behavior","safe",",","classes","that","include","this","mixin","must","define","a","class","attribute","`","_PROTECTED_KEYS","`","that","defines","the","attributes","that","are","accessed","within","`","__getitem__","`",".","For","example",",","if","`","__getitem__","`","is","defined","as","`","return","self._data","[","key","]","`",",","we","must","define","`","_PROTECTED_KEYS=","{","'_data","'","}","`","."]
code: def __getattr__(self, key):
      if key in self._PROTECTED_KEYS:
          raise AttributeError
      try:
          return self[key]
      except KeyError:
          raise AttributeError(
              f"{type(self).__name__} object has no attribute {key}"
          )
  
imports: import decimal
  import functools
  import os
  import traceback
  import warnings
  from typing import FrozenSet, Set, Union
  import numpy
  import pandas
  import rmm
  import cudf
  import cudf.api.types
  from cudf.core import column
  from cudf.core.buffer import as_buffer
label_desc: Use image node_id 1 for calling the GetAttrGetItemMixin obj's underlying member method code with example usage: obj.__getattr__(key) and returns: self