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文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python中逗号的三种作用实例分析
Jun 08 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python微信库:itchat的用法详解
Aug 14 Python
python切片及sys.argv[]用法详解
May 25 Python
python实现一组典型数据格式转换
Dec 15 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
简单了解python中对象的取反运算符
Jul 01 Python
python中dict使用方法详解
Jul 17 Python
python字符串的拼接方法总结
Nov 18 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
Python socket服务常用操作代码实例
Jun 22 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 escape URL编码
2008/12/10 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
学习php中的正则表达式
2014/08/17 PHP
php生成curl命令行的方法
2015/12/14 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Python实现简单登录验证
2016/04/13 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
python pandas 时间日期的处理实现
2019/07/30 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Python属性和内建属性实例解析
2020/01/14 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
公司经理任命书
2014/06/05 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
我的生日感言
2015/08/03 职场文书
vue+spring boot实现校验码功能
2021/05/27 Vue.js
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL