mindformers.tools.register.MindFormerRegister
===============================================

.. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.4.0/resource/_static/logo_source.svg
    :target: https://gitee.com/mindspore/mindformers/blob/v1.3.0/docs/api/api_python/tools/mindformers.tools.register.MindFormerRegister.rst
    :alt: 查看源文件


.. py:class:: mindformers.tools.register.MindFormerRegister()

    MindFormers的注册接口,提供了接口注册和获取的相关方法。

    .. py:method:: get_cls(module_type, class_name=None)
        :classmethod:

        从注册字典中获取类。

        参数:
            - **module_type** (MindFormerModuleType) - MindFormers的模块类型名。
            - **class_name** (str, 可选) - 类名。默认值: ``None`` 。

        返回:
            一个注册了的类。

        异常:
            - **ValueError** - 在注册字典中未找到类型是 `module_type` 的类 `class_name` 。
            - **ValueError** - 在注册字典中未找到 `module_type` 。

    .. py:method:: get_instance(module_type=MindFormerModuleType.TOOLS, class_name=None, **kwargs)
        :classmethod:

        获取注册字典中类的实例。

        参数:
            - **module_type** (MindFormerModuleType, 可选) - MindFormers的模块类型名。默认值: ``MindFormerModuleType.TOOLS`` 。
            - **class_name** (str, 可选) - 类名。默认值: ``None`` 。
            - **kwargs** (Any) - 额外的关键字参数,用于构造类的实例。

        返回:
            一个类的实例。

        异常:
            - **ValueError** - `class_name` 不能为 ``None`` 。
            - **ValueError** - 在注册字典中未找到类型是 `module_type` 的类 `class_name` 。

    .. py:method:: get_instance_from_cfg(cfg, module_type=MindFormerModuleType.TOOLS, default_args=None)
        :classmethod:

        通过配置获取注册字典中类的实例。

        参数:
            - **cfg** (dict) - 配置字典。应至少包含键 "type" 。
            - **module_type** (MindFormerModuleType, 可选) - MindFormers的模块类型名。默认值: ``MindFormerModuleType.TOOLS`` 。
            - **default_args** (dict, 可选) - 默认的初始化参数。默认值: ``None`` 。

        返回:
            一个类的实例。

        异常:
            - **TypeError** - `cfg` 必须为一个配置。
            - **KeyError** - `cfg` 或 `default_args` 必须包含键 "type" 。
            - **TypeError** - `default_args` 必须为一个字典或为 ``None`` 。
            - **ValueError** - 在注册字典中未找到类型是 `module_type` 的类 `class_name` 。

    .. py:method:: is_exist(module_type, class_name=None)
        :classmethod:

        判断给定的类名是否在当前的类型组中。若 `class_name` 没有给定,则判断给定的类名是否在当前的注册字典中。

        参数:
            - **module_type** (MindFormerModuleType) - MindFormers的模块类型名。
            - **class_name** (str, 可选) - 类名。默认值: ``None`` 。

        返回:
            一个布尔值,表示是否存在。

    .. py:method:: register(module_type=MindFormerModuleType.TOOLS, alias=None)
        :classmethod:

        将类注册至注册字典中的装饰器。

        参数:
            - **module_type** (MindFormerModuleType, 可选) - MindFormers的模块类型名。默认值: ``MindFormerModuleType.TOOLS`` 。
            - **alias** (str, 可选) - 类的别名。默认值: ``None`` 。

        返回:
            包装函数,对注册的类进行装饰。

    .. py:method:: register_cls(register_class, module_type=MindFormerModuleType.TOOLS, alias=None)
        :classmethod:

        将类注册至注册字典中的方法。

        参数:
            - **register_class** (type) - 需要被注册的类。
            - **module_type** (MindFormerModuleType, 可选) - MindFormers的模块类型名。默认值: ``MindFormerModuleType.TOOLS`` 。
            - **alias** (str, 可选) - 类的别名。默认值: ``None`` 。

        返回:
            类,被注册的类本身。