python MySQL 模块类文件名

标签 python file class directory module

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

这就是我现在所拥有的

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

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

然后在 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 文件具有以下属性:[客户、员工、订单]

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


包是一个内部有__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()   

--Gahooa

关于python MySQL 模块类文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/561791/

相关文章:

从动态分配的文件中计算最多重复出现的元音

jquery - 使用 jQuery .hasClass 的 If 语句无法正常工作

python - Python 3.5.1 中的循环问题

Python list() 函数更新以接受不可迭代?

c - 从 C 中的文本文件打印有关有年龄限制的人的数据

c# - 我如何在 C# 中找出某些东西是结构(值类型)或类(引用类型)

java - 如何获取 android 命名空间中的所有类?

python - 在python中,如何将一位数转换为两位数字符串?

python - 使用linux终端修改python var

java - 使用 openFileOutput 的文件路径