Skip to main content
 首页 » 编程设计

python MySQL模块类文件名

2024年08月12日24qq78292959

我很困惑目录名、文件名和类名是如何一起工作的。

这是我现在的状态

  app.py 
  database/ 
     client.py 
     staff.py 
     order.py 

在 client.py 中,我有一个名为 client 的类,它充当数据库模型 (MVC)。与我的其他文件相同:staff.py 有一个名为 staff 的类,order.py 有一个 order。

然后在 app.py 中我做:

  from database import client as model 
  c = model.client() 

然后我就糊涂了。在理想世界中这就是我想要做的:

  1. 将我的数据库模型类保存在各自目录中的单独文件中。

  2. 像这样使用它们:

  c = model.client() 
  o = model.order() 
  s = model.staff() 

我能看到的唯一方法是将我所有的类放在一个名为 model.py 的文件中,并将其保存在根目录下。

我确定我在这里遗漏了一些非常基本的东西。

请您参考如下方法:

Python 有两种导入内容的基本方法。模块和包。


模块只是包含路径上的一个 python 文件:order.py

如果 order.py 定义了一个名为 foo 的类,那么可以通过以下方式访问该类:

import order 
o = order.foo() 

为了使用原始问题中的语法,您需要确保您的 model.py 文件具有以下属性:[client, staff, order]

但是,这通常意味着将它们放在一个文件中。这是您要避免的。


包是一个目录,里面有一个__init__.py。 init.py 初始化包(即它在第一次导入时运行),您可以在该目录中包含模块或子包。

model 
    __init__.py 
    client.py 
    staff.py 
    order.py 

这样,要访问任何子模块,您只需说:

import model.client 

但是,这只是导入模块。它没有导入模块的任何属性。因此,为了访问模块内的类,您需要指定它:

import model.client 
o = model.client.clientclass()    

这有点乏味,但组织得很好。


两全其美(性能不是什么大问题):

如果您在__init__.py中键入以下代码:

from .client import clientclass as client 
from .staff import staffclass as staff 
from .order import orderclass as order 

那么你已经自动加载了所有的类,并且可以通过以下方式访问它们:

import model 
c = model.client() 
s = model.staff() 
o = model.order() 

最后,坚持使用非魔法的方式可能更简单:

import model.client 
o = model.client.clientclass()    

--加呼