您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用元类的__call__方法而不是__new__?

使用元类的__call__方法而不是__new__?

直接回答你的问题是:当你想要做 不仅仅是定制实例创建,或当你想分开全班 从它是如何创建的。

请参阅我在Python中创建单例的答案以及相关的讨论。

有几个优点。

它使您可以将类的 工作 与如何创建的细节分开。元类和类分别负责一件事。

您可以在元类中编写一次代码,并将其用于自定义几个类的调用行为,而不必担心多重继承。

子类可以在其__new__方法中覆盖行为,但__call__元类上甚至根本不需要调用__new__

如果有设置工作,则可以__new__元类方法中进行,并且仅发生一次,而不是每次调用该类时都进行。

当然,在很多情况下,__new__如果您不担心单一职责原则,那么定制也可以工作。

但是,还有其他一些用例必须在更早的时候发生,即创建类时,而不是创建实例时。当这些方法发挥作用时,就必须要有一个元类。请参阅Python中元类的(具体)用例?有很多很棒的例子。

其他 2022/1/1 18:44:33 有411人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶