  def __init__(self,
               project_id: Optional[str] = None,
               default_zone: str = 'us-central1-f') -> None:
    """Initialize the GoogleCloudProject object.

    Args:
      project_id (str): Optional. The name of the project. If not provided, we
          look in the default gcloud environment if a project is already set. If
          none is found, we raise an AttributeError.
      default_zone (str): Optional. Default zone to create new resources in.
          Default is 'us-central1-f'.

    Raises:
        AttributeError: If no project_id was provided and none was inferred
            from the gcloud environment.
    """
    if project_id:
      self.project_id = project_id
    else:
      _, project_id = default()  # type: ignore [no-untyped-call]
      if project_id:
        self.project_id = project_id
      else:
        raise AttributeError("No project_id was found. Either pass a project_id"
                             " to the function, or set one in your gcloud SDK: "
                             "`gcloud config set project project_id`")
    self.default_zone = default_zone
    self._compute = None  # type: Optional[compute_module.GoogleCloudCompute]
    self._function = None  # type: Optional[function_module.GoogleCloudFunction]
    self._gke = None  # type: Optional[gke_module.GoogleKubernetesEngine]
    self._build = None  # type: Optional[build_module.GoogleCloudBuild]
    self._log = None  # type: Optional[log_module.GoogleCloudLog]
    self._storage = None  # type: Optional[storage_module.GoogleCloudStorage]
    # pylint: disable=line-too-long
    self._storagetransfer = None  # type: Optional[storagetransfer_module.GoogleCloudStorageTransfer]
    self._monitoring = None  # type: Optional[monitoring_module.GoogleCloudMonitoring]
    self._cloudsql = None  # type: Optional[cloudsql_module.GoogleCloudSQL]
    self._cloudresourcemanager = None  # type: Optional[cloudresourcemanager_module.GoogleCloudResourceManager]
    self._serviceusage = None  # type: Optional[serviceusage_module.GoogleServiceUsage]
    # pylint: enable=line-too-long
    self._bigquery = None  # type: Optional[bigquery_module.GoogleBigQuery]
Initialize the GoogleCloudProject object.

Args:
project_id (str): Optional. The name of the project. If not provided, we
look in the default gcloud environment if a project is already set. If
none is found, we raise an AttributeError.
default_zone (str): Optional. Default zone to create new resources in.
Default is 'us-central1-f'.

Raises:
AttributeError: If no project_id was provided and none was inferred
from the gcloud environment.
libcloudforensics/providers/gcp/internal/project.py