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 08 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
Python3中列表list合并的四种方法
Apr 19 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
Python工程师必考的6个经典面试题
Jun 28 Python
python中Django文件上传方法详解
Aug 05 Python
Python实现随机爬山算法
Jan 29 Python
Django后端按照日期查询的方法教程
Feb 28 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 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
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
教大家制作简单的php日历
2015/11/17 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
javascript 写类方式之二
2009/07/05 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
使用python生成目录树
2018/03/29 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
光声世纪笔试题目
2012/08/25 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
图书室管理制度
2014/01/19 职场文书
学习十八大报告感言
2014/02/04 职场文书
青奥会口号
2014/06/12 职场文书
励志演讲稿300字
2014/08/21 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
欠条格式范本
2015/07/03 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL