鱼C论坛

 找回密码
 立即注册
查看: 677|回复: 2

没有__all__属性怎么过滤掉模块里不能供外部调用的函数或类???小白求助

[复制链接]
发表于 2018-6-1 07:40:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
当导入模块,调用了__doc__属性并打印出来后,使用dir()函数可以查询到该模块定义了哪些变量,函数,和类,小甲鱼老师在书上是用模块里有的__all__属性过滤掉不能供外部调用的变量,函数,类,那要是没有这个属性,该怎么过滤,怎么才能知道哪些可以供外部调用呢?小白求解答?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-6-2 22:56:09 | 显示全部楼层
我记得小甲鱼老师在课上有说过,如果要保护一个类属性或方法,可以在它的变量名前写上_。
例如:_a _b,同理方法也是相同 def _func():

但是好像这种方法是类似人为性的干涉,而不是系统的干涉,我记得我实验过还是可以调用,但具体可不可以,你可以实验以下。
我查了一下,__all__ 方法应该是唯一的方法了。这种方法是不会没有的。属于内建方法,和__init__方法以及__del__方法一样。

不知道老兄是不是原先学过c c艹 c#,他们对于变量保护确实有严格的规定,但是python没有。所以不要纠结这个问题,变量保护很大意义上并不是为了保护不被别人或别的程序所调用,而是避免变量名冲突。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-3 07:05:50 | 显示全部楼层
simplerjiang 发表于 2018-6-2 22:56
我记得小甲鱼老师在课上有说过,如果要保护一个类属性或方法,可以在它的变量名前写上_。
例如:_a _b,同 ...

哦哦,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-30 14:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表