docs: def init(policy_file=None, rules=None, default_rule=None, use_conf=True):
      """Init an Enforcer class.
  
         :param policy_file: Custom policy file to use, if none is specified,
                             `CONF.policy_file` will be used.
         :param rules: Default dictionary / Rules to use. It will be
                       considered just in the first instantiation.
         :param default_rule: Default rule to use, CONF.default_rule will
                              be used if none is specified.
         :param use_conf: Whether to load rules from config file.
      """
  
      global _ENFORCER
      global saved_file_rules
  
      if not _ENFORCER:
          _ENFORCER = policy.Enforcer(CONF,
                                      policy_file=policy_file,
                                      rules=rules,
                                      default_rule=default_rule,
                                      use_conf=use_conf
                                      )
          register_rules(_ENFORCER)
          _ENFORCER.load_rules()
      # Only the rules which are loaded from file may be changed
      current_file_rules = _ENFORCER.file_rules
      current_file_rules = _serialize_rules(current_file_rules)
  
      if saved_file_rules != current_file_rules:
          _warning_for_deprecated_user_based_rules(current_file_rules)
          saved_file_rules = copy.deepcopy(current_file_rules)