首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次继承抽象类时,我都能运行代码吗?

每次继承抽象类时,我都能运行代码吗?
EN

Stack Overflow用户
提问于 2019-06-27 08:45:20
回答 2查看 194关注 0票数 2

我需要为从抽象类继承的所有类连接一个django信号。有没有像__on_inherit__这样的神奇的python方法,它允许我每次继承抽象类时都运行信号连接代码?

更新:为了澄清起见,我需要每个类运行一次类评估的代码,而不是每个实例/对象运行一次。

EN

回答 2

Stack Overflow用户

发布于 2019-06-27 08:58:36

是的,确实存在__init_subclass__钩子,每次类被子类化时都会触发它。

将使用第一个参数cls作为新子类(而不是原始父类)调用它。正如文档中所述,您甚至可以从子类向钩子传递任意参数。

希望这能帮到你。

编辑:这是通过PythonVersion3.6中的PEP 487 2添加的。在早期的python版本中,不调用此方法。

1

2

票数 3
EN

Stack Overflow用户

发布于 2019-06-27 09:32:52

对于python >= 3.6,Terseus已经提到了__init__subclass__ ok。

对于较老的python,连接到类创建(我指的是“创建一个新的类对象”)的规范方法是使用自定义元类并覆盖__new____init__方法(这已经被广泛地记录下来,因此我不会发布一个示例)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56787256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档