为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕丝7291255 2021-12-29 10:59:48
假设我在 Python 模块中有一堆类。我想要一些方法来标记这些类,也许使用装饰器之类的东西,这样我就可以从我的模块中只访问这些类。例如:class One:    ...@markedclass Two:    ...@markedclass Three:    ...我真正想做的是在运行时以某种方式动态地将这些标记的类放入列表中。像这样的东西:marked_classes = [Two, Three]在 Python 中执行此操作的理想方法是什么?谢谢。注意:它不一定是装饰器。我只是添加了那部分来解释这个问题。编辑:要记住的重要一点是,您不必知道类名称即可实际获取标记类的列表。所以类似的事情marked_classes.append(Two)显然是行不通的。
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

创建一个里面有一个列表的类装饰器。在装饰器中,您可以获取类并将其添加到列表中。

模块加载完成后,您应该在列表中拥有这些类。


查看完整回答
反对 回复 2021-12-29
?
撒科打诨

TA贡献1934条经验 获得超2个赞

装饰器编写起来相当简单。


marked_classes = []



def mark(cls):

    marked_classes.append(cls)

    return cls



class One:

    ...



@marked

class Two:

    ...



@marked

class Three:

    ...


查看完整回答
反对 回复 2021-12-29
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我建议将您的课程放在包内的模块中


/package

    __init__.py

    module.py

然后在您的init .py 文件中将您想要“公开”的类分配给所有变量列表


__init__.py:


from .module import Two, Three

__all__ = [Two, Three]

然后在调用它时:


script.py


from package import *

# or

from package import Two, Three


查看完整回答
反对 回复 2021-12-29
  • 3 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号