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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
Python守护进程(daemon)代码实例
Mar 06 Python
初学Python函数的笔记整理
Apr 07 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
Python脚本获取操作系统版本信息
Dec 17 Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
Python实现在线音乐播放器
Mar 03 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
使用python实现简单五子棋游戏
Jun 18 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
Python对象的属性访问过程详解
Mar 05 Python
python通过函数名调用函数的几种场景
Sep 23 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/10/09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
php分页查询的简单实现代码
2017/03/14 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
jquery $.ajax入门应用二
2008/11/19 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
用Python给文本创立向量空间模型的教程
2015/04/23 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
Python变量和数据类型详解
2017/02/15 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
对Python信号处理模块signal详解
2019/01/09 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
普通大学毕业生自荐信
2013/11/04 职场文书
店面销售职位的职责
2014/03/09 职场文书
地震捐款倡议书
2014/08/29 职场文书
干部考核工作总结
2015/08/12 职场文书
事业单位岗位说明书
2015/10/08 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS