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 除法小技巧
Sep 06 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
视觉直观感受若干常用排序算法
Apr 13 Python
python算法演练_One Rule 算法(详解)
May 17 Python
基于Python实现的微信好友数据分析
Feb 26 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
python 实现识别图片上的数字
Jul 30 Python
python web框架 django wsgi原理解析
Aug 20 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
详解scrapy内置中间件的顺序
Sep 28 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 header函数分析详解
2011/08/06 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
python实现电子词典
2020/04/23 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
new修饰符是起什么作用
2015/06/28 面试题
优秀本科生求职推荐信
2014/02/24 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
大学生自我评价范文
2015/03/03 职场文书
2015年团支书工作总结
2015/04/03 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电