博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
说说在 Python 中如何导入类
阅读量:5941 次
发布时间:2019-06-19

本文共 2220 字,大约阅读时间需要 7 分钟。

随着我们不断地在一个文件中添加新的功能, 就会使得文件变得很长。 即便使用了继承,也抑制不住类的成长。为了解决这一问题,我们可以将类存储在模块中, 然后在主程序中导入所需的模块,这样可以让文件尽可能保持整洁,从而实现更好的管理。

导入类是一种很有效的编程方式。 这样我们就可以把大部分逻辑存储在独立的文件中,然后在主程序编写高级逻辑咯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 Userdeniro = 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 Userdeniro = User('deniro', '1')print('拥有的权限:' + str(deniro.privileges.contents))复制代码

运行结果:

拥有的权限:['修改某某账号密码', '禁用某某账号']

3 导入多个类

可以在一个模块中导入多个类, 用逗号分隔这些需要导入类。 导入后, 就可以根据应用场景,来创建任意数量的类实例。

from User import User,Privilegep=Privilege(["删除账号权限"])print('权限内容:'+str(p.contents))复制代码

运行结果:

权限内容:['删除账号权限']

4 导入模块

我们还可以一次性导入整个模块, 这需要使用句点表示法来调用相应的类:

import User...p=User.Privilege(["删除账号权限"])...复制代码

4 导入所有类

from User import *复制代码

非必要,不使用这种导入方式,因为:

  1. 通过文件开头定义良好的 import 语句, 我们就可以清楚地知道使用了哪些类。但这种导入方式没有提供这种好处。
  2. 如果不小心导入了一个与本程序文件中同名的类, 就会引发难以诊断的错误。

如果确实需要从一个模块中导入很多类,那么建议导入整个模块, 然后使用 module_name.class_name 语法来调用它们。

5 在模块中导入另一个模块

为了避免模块太大或者保证模块中的类都是相关的, 这时就需要将类分散到多个模块中。这样, 可能一个模块中的类会依赖另一个模块中的类。这种场景下, 我们就会在一个模块中导入另一个模块。因为导入语法相同,所以在此就不赘述啦O(∩_∩)O~


建议一开始让代码结构尽可能简单。 即先尽可能在一个文件中完成所有的工作, 确定一切都能满足业务要求正确执行后,再将类移到独立的模块中。

转载于:https://juejin.im/post/5ca6d8d3e51d4576e1314073

你可能感兴趣的文章
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>