python: 两个具有相同名称的模块和类位于不同的包下

8 浏览
0 Comments

python: 两个具有相同名称的模块和类位于不同的包下

我开始学习Python并编写一个练习应用程序。目录结构如下:

src
 |
 --ShutterDeck
    |
    --Helper
       |
       --User.py -> class User
    --Controller
       |
       --User.py -> class User

src目录位于PYTHONPATH中。在另一个文件中,比如main.py,我想要访问两个User类。我该如何做呢?

我尝试使用以下方法,但是失败了:

import cherrypy
from ShutterDeck.Controller import User
from ShutterDeck.Helper import User
class Root:
  @cherrypy.expose
  def index(self):
    return 'Hello World'
u1=User.User()
u2=User.User()

这肯定是有歧义的。我能想到的另一种方式(类似于C++的方式)是:

import cherrypy
from ShutterDeck import Controller
from ShutterDeck import Helper
class Root:
  @cherrypy.expose
  def index(self):
    return 'Hello World'
u1=Controller.User.User()
u2=Helper.User.User()

但是当运行上述脚本时,会出现以下错误:

u1=Controller.User.User()
AttributeError: 'module' object has no attribute 'User'

我无法弄清楚为什么会出现错误?目录ShutterDeckHelperController中都有__init__.py文件。

0