Python类导入实战:从单类到模块引用的完整指南

Noah
Noah
发布时间:2026-10-13 | 4人浏览过
原创

本文详细解析Python中导入类的多种策略。涵盖如何导入单个类、在模块中定义多个类并分别导入,以及一次性导入整个模块的方法。重点对比了`from module import Class`与`import module`的区别,深入剖析使用`from module import *`的风险与适用场景,并提供保持代码结构清晰的最佳实践建议。

Python类导入概述

前言

随着项目功能的不断扩展,单个文件中的代码量会急剧增加,导致文件冗长难维护。即使利用继承机制,也无法完全遏制类的无序增长。为解决这一痛点,推荐将类封装至独立的模块文件中,并在主程序中按需导入。这种分离策略有助于保持代码文件的整洁性,提升项目的可管理性与可读性。

采用导入类的方式是一种高效的编程实践。它允许开发者将核心业务逻辑封装在独立的文件中,而在主程序中仅保留高层级的逻辑调用,从而实现关注点分离。

导入单个类

1 导入一个类

假设存在一个名为 `User` 的类,其所在文件命名为 `User.py`。该文件在Python中被称为模块。


class User():
 '''账号信息'''

 def __init__(self, name, pwd):
  '''初始化'''
  self.name = name
  self.pwd = pwd
  # 登陆次数
  self.login_count = 0

 def print_login_count(self):
  '''打印登陆次数'''
  print('登陆次数=' + str(self.login_count))

 def update_login_count(self, num):
  '''更新登陆次数'''
  self.login_count = num

 def valid(self):
  '''是否验证通过'''
  print(self.name + ' 验证通过')

接下来,我们在另一个名为 `deniro.py` 的文件中,演示如何导入并使用上述定义的 `User` 类。


from User import User


deniro = User('deniro', '1')
print('账号名:' + deniro.name)

运行结果:

账号名:deniro

处理模块中的多个类

2 导入一个模块多个类

开发者可以在同一个模块文件中定义任意数量的类。尽管数量不限,但建议这些类之间保持业务逻辑上的关联性,以维持模块的内聚性。

我们在 `User.py` 中新增定义了一个 `Privilege` 类,并将其作为 `User` 类的属性进行关联。


class User():
 '''账号信息'''

 def __init__(self, name, pwd):
  '''初始化'''
  self.name = name
  self.pwd = pwd
  # 登陆次数
  self.login_count = 0
  # 拥有的权限
  self.privileges = Privilege(['修改某某账号密码', '禁用某某账号'])

 def print_privileges(self):
  '''打印拥有的权限'''
  print(self.privileges.contents)

...






class Privilege():
 '''权限'''

 def __init__(self, contents):
  self.contents = contents

随后,在外部文件中调用该模块中的相关类。


# 导入一个类
from User import User


deniro = User('deniro', '1')
print('拥有的权限:' + str(deniro.privileges.contents))

运行结果:

拥有的权限:['修改某某账号密码', '禁用某某账号']

3 导入多个类

若需在一个模块中导入多个类,可使用逗号分隔各个类的名称。导入完成后,可根据具体应用场景,灵活创建任意数量的类实例。 from User import User,Privilege


from User import User,Privilege

p=Privilege(["删除账号权限"])
print('权限内容:'+str(p.contents))

运行结果:

权限内容:['删除账号权限']

模块级导入与通配符导入

4 导入模块

此外,还可以选择一次性导入整个模块。这种方式需要使用点号表示法(dot notation)来调用模块内的特定类。


import User

...

p=User.Privilege(["删除账号权限"])
...

4 导入所有类


from User import *

除非特殊情况,否则不建议使用这种导入方式,主要原因如下:

  • 通过在文件开头编写规范的 `import` 语句,可以清晰地追踪当前文件使用了哪些类。而通配符导入方式掩盖了具体的依赖关系,不利于代码审查与维护。
  • 若不慎导入了一个与当前程序文件中已存在的类同名的类,将引发难以排查的命名冲突错误。

如果确实需要从某个模块中导入大量类,建议采用导入整个模块的方式,并通过 `module_name.class_name` 的语法格式进行调用,以明确类来源。

模块间依赖与代码重构建议

5 在模块中导入另一个模块

为了避免单个模块过于庞大,或确保模块内类的业务相关性,有时需要将类分散到多个模块中。此时,可能出现一个模块依赖另一个模块中类的情况。在此场景下,我们需要在一个模块内部导入另一个模块。由于导入语法与前述一致,此处不再赘述具体代码示例。

建议初期保持代码结构尽可能简单。即优先在一个文件中完成所有功能的开发与验证,确保业务逻辑正确执行后,再将类迁移至独立的模块中进行重构。

总结

以上就是本文的全部内容,希望本文关于Python类导入的解析对您的学习或工作有所帮助。感谢支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表