前言
随着我们不断地在一个文件中添加新的功能, 就会使得文件变得很长。 即便使用了继承,也抑制不住类的成长。为了解决这一问题,我们可以将类存储在模块中, 然后在主程序中导入所需的模块,这样可以让文件尽可能保持整洁,从而实现更好的管理。
导入类是一种很有效的编程方式。 这样我们就可以把大部分逻辑存储在独立的文件中,然后在主程序编写高级逻辑咯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~
建议一开始让代码结构尽可能简单。 即先尽可能在一个文件中完成所有的工作, 确定一切都能满足业务要求正确执行后,再将类移到独立的模块中。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]