'Retrieve module selection items from the hosts data file with default
selection for users.
.. note:: This is a `classmethod`.
:param flag_v6: A flag indicating whether to receive IPv6 hosts
entries or the IPv4 ones. Default by `False`.
:attr:`flag_v6`  hosts
True             IPv6
False            IPv4
:type flag_v6: bool
:return: modules, defaults, slices
* modules(`list`): Information of modules for users to select.
* defaults(`dict`): Default selection config for selected parts.
* slices(`list`): Numbers of modules in each part.
:rtype: list, dict, list'

@classmethod
def get_choice(cls, flag_v6=False):

    ch_parts = (8, (32 if flag_v6 else 16), 64)
    cls._cur.execute('\n                                                SELECT    *    FROM    modules\n                                                WHERE    part_id    IN    (:id_shared,    :id_ipv,    :id_adblock);\n                                ', ch_parts)
    modules = cls._cur.fetchall()
    cls._cur.execute('\n                                                SELECT    part_id,    part_default    FROM    parts\n                                                WHERE    part_id    IN    (:id_shared,    :id_ipv,    :id_adblock);\n                                ', ch_parts)
    default_cfg = cls._cur.fetchall()
    defaults = {}
    for default in default_cfg:
        defaults[default[0]] = cls.get_ids(default[1])
    slices = [0]
    for ch_part in ch_parts:
        cls._cur.execute('\n                                                                SELECT    COUNT(mod_id)    FROM    modules\n                                                                WHERE    part_id=:ch_part;\n                                                ', (ch_part,))
        slices.append(cls._cur.fetchone()[0])
    for s in range(1, len(slices)):
        slices[s] += slices[(s - 1)]
    return (modules, defaults, slices)
