3 回答
TA贡献1836条经验 获得超13个赞
使用数据类:
@dataclass
class MarkdownIsOpen:
ChapterOpen: bool = False
SectionOpen: bool = False
ArticleOpen: bool = False
或者:
MarkdownIsOpen = make_dataclass('MarkdownIsOpen', ['ChapterOpen', 'SectionOpen', 'ArticleOpen'])
请注意,这需要 Python 3.7。
如果您使用的是 Python <= 3.6,那么普通类也可以。类并不昂贵,它们向用户提供了一个提示,即您的函数不需要任何dict类似旧的,而是具有以下属性的特殊容器。
将此与例如 Cstruct或 Scala 的 进行比较case class,它们的用途大致相同。
此外,您甚至可以覆盖__slots__和/或__getitem__允许dict类似访问,并防止添加新属性:
class MarkdownIsOpen:
__slots__ = ('ChapterOpen', 'SectionOpen', 'ArticleOpen')
def __init__(self):
self.ChapterOpen = False
self.SectionOpen = False
self.ArticleOpen = False
def __getattr__(self, key):
return getattr(self, key)
def __setattr__(self, key, value):
setattr(self, key, value)
例子:
m = MarkdownIsOpen()
m['ChapterOpen'] = True
print(m['SectionOpen'])
m['Nonexistent'] = False
输出:
False
AttributeError: 'MarkdownIsOpen' object has no attribute 'Nonexistent'
TA贡献1783条经验 获得超4个赞
您可以使用数据类。
@dataclass
class MarkdownIsOpen:
ChapterOpen: bool = False
SectionOpen: bool = False
ArticleOpen: bool = False
TA贡献1775条经验 获得超8个赞
添加回答
举报