如果有__init__.py文件,是否应该有__new__.py文件?

时间:2019-11-11 15:11:19

标签: python metaprogramming

我正在按以下方式构造程序:

program/
  base/
    __init__.py
    module1.py
    module2.py
    ...
  app1/
    __init__.py
    module11.py
    module12.py
    ...
  app2/
    __init__.py
    module21.py
    module22.py
    ...
  ...

base的{​​{1}}用于公开__init__.pyapp1共同要求的最小对象集,如下所示:

app2

现在,我了解到,当程序实现一个类并执行该程序时,解释器将调用该类的# __init__ file from module1 import rock, paper from module2 import scissor ... 方法(如果存在),然后调用__new__方法。

我的问题是:模块是否可以实现与类的__init__方法相同的__new__.py文件?就我的程序而言,我将使用这样的文件来动态更改__new__rockpaper的状态。

1 个答案:

答案 0 :(得分:3)

不,他们不能。 specification of the import system声明该语言仅以特殊方式使用__init__.py。您放入文件夹中的任何其他文件都只是常规文件。

对象创建过程中与__init__方法的相似之处仅限于名称。