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

If there is an __init__.py file, should there be a __new__.py file?

我正在开发一个结构如下的程序:

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

base__init__.py 用于公开 app1app2 共同需要的最小对象集,如下所示:

# __init__ file
from module1 import rock, paper
from module2 import scissor
...

我理解当一个程序实现了一个class,并且当那个程序被执行时,解释器调用class的__new__方法(如果它存在),然后调用__init__方法。

我的问题是:包是否可以实现一个 __new__.py 文件,其工作方式与 class 的 __new__ 方法相同?对于我的程序,我将使用这样的文件来动态更改 rockpaperscissor.

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

在对象创建方面与__init__方法的相似之处仅限于名称。