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中操作时间之tzset()方法的使用教程
May 22 Python
python中Apriori算法实现讲解
Dec 10 Python
Python处理中文标点符号大集合
May 14 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
python学生管理系统学习笔记
Mar 19 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
python中Ansible模块的Playbook的具体使用
May 28 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实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
php自动加载方式集合
2016/04/04 PHP
PHP如何将XML转成数组
2016/04/04 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
javascript常用函数(1)
2015/11/04 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
Django中Middleware中的函数详解
2019/07/18 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Python模块常用四种安装方式
2020/10/20 Python
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
什么是抽象
2015/12/13 面试题
计算机专业学生的自我评价
2013/12/15 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
英文版辞职信
2015/02/28 职场文书
python创建字典及相关管理操作
2022/04/13 Python