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 12 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
python抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
Mar 05 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
python实现计算器功能
Oct 31 Python
Python如何在循环内使用list.remove()
Jun 01 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
python调用webservice接口的实现
2019/07/12 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
python自定义函数def的应用详解
2020/06/03 Python
python批量修改文件名的示例
2020/09/27 Python
python中四舍五入的正确打开方式
2021/01/18 Python
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
大专生自荐信
2013/10/04 职场文书
房地产开发计划书
2014/01/10 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
安全责任书模板
2014/07/22 职场文书
授权委托书(完整版)
2014/09/10 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
2014年副班长工作总结
2014/12/10 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书