class_docstr: An abstract asynchronous, vectorized environment.
  
  :param num_envs: (int) the number of environments
  :param observation_space: (Gym Space) the observation space
  :param action_space: (Gym Space) the action space
docstr: Check if an attribute reference is being hidden in a recursive call to __getattr__
  
  :param name: (str) name of attribute to check for
  :param already_found: (bool) whether this attribute has already been found in a wrapper
  :return: (str or None) name of module whose attribute is being shadowed, if any.
docstr_tok: ["Check","if","an","attribute","reference","is","being","hidden","in","a","recursive","call","to","__getattr__",":","param","name",":","(","str",")","name","of","attribute","to","check","for",":","param","already_found",":","(","bool",")","whether","this","attribute","has","already","been","found","in","a","wrapper",":","return",":","(","str","or","None",")","name","of","module","whose","attribute","is","being","shadowed",",","if","any","."]
code: def getattr_depth_check(self, name, already_found):
      """Check if an attribute reference is being hidden in a recursive call to __getattr__
  
      :param name: (str) name of attribute to check for
      :param already_found: (bool) whether this attribute has already been found in a wrapper
      :return: (str or None) name of module whose attribute is being shadowed, if any.
      """
      if hasattr(self, name) and already_found:
          return "{0}.{1}".format(
              type(self).__module__, type(self).__name__
          )
      else:
          return None
  
imports: from abc import ABC, abstractmethod
  import inspect
  import pickle
  from typing import Sequence, Optional, List, Union
  import cloudpickle
  import numpy
  from stable_baselines import logger
  from stable_baselines.common.tile_images import tile_images
label_desc: Use image node_id 14 for calling the VecEnv obj's underlying member method code with example usage: obj.getattr_depth_check(name, already_found) and returns: str, None