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的Twisted框架编写非阻塞程序的代码示例
May 25 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Django基础之Model操作步骤(介绍)
May 27 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
python中的二维列表实例详解
Jun 19 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
python八皇后问题的解决方法
Sep 27 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
python requests证书问题解决
Sep 05 Python
python 实现波浪滤镜特效
Dec 02 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
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
vue多层嵌套路由实例分析
2019/03/19 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
Python实现的Excel文件读写类
2015/07/30 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
视图的作用
2014/12/19 面试题
企业军训感想
2014/02/07 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
政协常委会议主持词
2015/07/03 职场文书
node快速搭建后台的实现步骤
2022/02/18 NodeJs