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中的cookielib模拟登录网站
Apr 09 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
Python3 关于pycharm自动导入包快捷设置的方法
Jan 16 Python
详解Python的循环结构知识点
May 20 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
Python求正态分布曲线下面积实例
Nov 20 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
Feb 21 Python
如何在Django中使用聚合的实现示例
Mar 23 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 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中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python的垃圾回收机制详解
2019/08/28 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
协议书范本
2014/04/23 职场文书
2014年客房部工作总结
2014/11/22 职场文书
2015年大学生工作总结
2015/04/21 职场文书
会议简讯范文
2015/07/20 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书