有没有更好的方法来定义多个布尔变量?

Ake*_*Ake 3 python boolean

我的代码中有多个布尔变量,现在它们的定义如下:

self.paused, self.show_difficulty, self.resizable, self.high_score_saved, \
self.show_high_scores, self.show_game_modes = \
False, False, True, False, False, False
Run Code Online (Sandbox Code Playgroud)

我想到了像这样重构代码以提高可读性。

ui_options = {
    "paused": False,
    "show_difficulty": False,
    "resizable": False,
    "high_score_saved": False,
    "show_high_scores": False,
    "show_game_modes": False
}
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

fla*_*kes 6

要对这样的值进行分组,我建议使用数据类而不是字典。这意味着您仍然可以拥有命名属性,而不需要进行字符串查找。这将允许自动完成和静态分析器处理您的代码。

from dataclasses import dataclass


@dataclass
class UIOptions:
    paused: bool = False
    show_difficulty: bool = False
    resizable: bool = False
    high_score_saved: bool = False
    show_high_scores: bool = False
    show_game_modes: bool = False


ui_options = UIOptions()
Run Code Online (Sandbox Code Playgroud)