有没有办法在 Python 中标记类?

假设我在 Python 模块中有一堆类。我想要一些方法来标记这些类,也许使用装饰器之类的东西,这样我就可以从我的模块中只访问这些类。例如:


class One:

    ...


@marked

class Two:

    ...


@marked

class Three:

    ...

我真正想做的是在运行时以某种方式动态地将这些标记的类放入列表中。像这样的东西:


marked_classes = [Two, Three]

在 Python 中执行此操作的理想方法是什么?谢谢。注意:它不一定是装饰器。我只是添加了那部分来解释这个问题。


编辑:要记住的重要一点是,您不必知道类名称即可实际获取标记类的列表。所以类似的事情marked_classes.append(Two)显然是行不通的。


慕丝7291255
浏览 191回答 3
3回答

陪伴而非守候

创建一个里面有一个列表的类装饰器。在装饰器中,您可以获取类并将其添加到列表中。模块加载完成后,您应该在列表中拥有这些类。

撒科打诨

装饰器编写起来相当简单。marked_classes = []def mark(cls):    marked_classes.append(cls)    return clsclass One:    ...@markedclass Two:    ...@markedclass Three:    ...

蓝山帝景

我建议将您的课程放在包内的模块中/package    __init__.py    module.py然后在您的init .py 文件中将您想要“公开”的类分配给所有变量列表__init__.py:from .module import Two, Three__all__ = [Two, Three]然后在调用它时:script.pyfrom package import *# orfrom package import Two, Three
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python