Python中如何导入类示例详解


Posted in Python onApril 17, 2019

前言

随着我们不断地在一个文件中添加新的功能, 就会使得文件变得很长。 即便使用了继承,也抑制不住类的成长。为了解决这一问题,我们可以将类存储在模块中, 然后在主程序中导入所需的模块,这样可以让文件尽可能保持整洁,从而实现更好的管理。

导入类是一种很有效的编程方式。 这样我们就可以把大部分逻辑存储在独立的文件中,然后在主程序编写高级逻辑咯O(∩_∩)O哈哈~

1 导入一个类

假设有一个 User 类,文件名为 User.py,这个待导入的文件,一般称为模块:

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 导入模块

我们还可以一次性导入整个模块, 这需要使用句点表示法来调用相应的类:

import User

...

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

4 导入所有类

from User import *

非必要,不使用这种导入方式,因为:

  • 通过文件开头定义良好的 import 语句, 我们就可以清楚地知道使用了哪些类。但这种导入方式没有提供这种好处。
  • 如果不小心导入了一个与本程序文件中同名的类, 就会引发难以诊断的错误。

如果确实需要从一个模块中导入很多类,那么建议导入整个模块, 然后使用 module_name.class_name 语法来调用它们。

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

为了避免模块太大或者保证模块中的类都是相关的, 这时就需要将类分散到多个模块中。这样, 可能一个模块中的类会依赖另一个模块中的类。这种场景下, 我们就会在一个模块中导入另一个模块。因为导入语法相同,所以在此就不赘述啦O(∩_∩)O~

建议一开始让代码结构尽可能简单。 即先尽可能在一个文件中完成所有的工作, 确定一切都能满足业务要求正确执行后,再将类移到独立的模块中。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
深入讲解Python中面向对象编程的相关知识
May 25 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
Django基础之Model操作步骤(介绍)
May 27 Python
Python3数据库操作包pymysql的操作方法
Jul 16 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
解决python中的幂函数、指数函数问题
Nov 25 Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
python 爬取京东指定商品评论并进行情感分析
May 27 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 #Python
python3转换code128条形码的方法
Apr 17 #Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 #Python
Python2与Python3的区别实例总结
Apr 17 #Python
详解Python用户登录接口的方法
Apr 17 #Python
详解python中递归函数
Apr 16 #Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 #Python
You might like
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
CI框架中zip类应用示例
2014/06/17 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
javascript中attachEvent用法实例分析
2015/05/14 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
TensorFlow损失函数专题详解
2018/04/26 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
竞争上岗演讲稿
2014/01/05 职场文书
机修工工作职责
2014/02/21 职场文书
企业形象策划方案
2014/05/29 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
给老婆的道歉信
2015/01/20 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS