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数据类型详解(三)元祖:tuple
May 08 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
vscode 远程调试python的方法
Dec 01 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
django foreignkey(外键)的实现
Jul 29 Python
Python中的Cookie模块如何使用
Jun 04 Python
使用keras内置的模型进行图片预测实例
Jun 17 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中防止SQL注入实现代码
2011/02/19 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
python中list循环语句用法实例
2014/11/10 Python
Python实现获取网站PR及百度权重
2015/01/21 Python
python更改已存在excel文件的方法
2018/05/03 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
Python阶乘求和的代码详解
2020/02/14 Python
应届大学生求职的自我评价
2013/11/17 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
会计专业导师推荐信
2014/03/08 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis