python变量中单下划线和双下划线的区别是什么

发布时间:2021-10-25 18:20:03 作者:柒染
来源:亿速云 阅读:173

python变量中单下划线和双下划线的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、变量的定义

在Python中,有以下几种方式来定义变量:

xx:公有变量

_xx:前置单下划线,私有化属性或方法,一般来讲,变量名_xx被看作是“私有 的”,在模块或类外不可以使用。当变量是私有的时候,用_xx 来表示变量是很好的习惯。类对象和子类可以访问,这并不能完全做到真正的私有,只是约定俗成的而已,这样写表示不希望这个变量在外部被直接调用

__xx:前置双下划线,私有化属性或方法,无法在外部直接访问(名字重整所以访问不到,只能是允许这个类本身进行访问了。连子类也不可以)

__xx__:前后双下划线,系统定义名字(这就是在python中强大的魔法方法),因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。

xx_:后置单下划线,用于避免与Python关键词的冲突

如以下例子所示,我在test类中定义了x,_x和 __x三个属性,并创建了test的类对象t,对这三个属性进行访问,__x不能被访问到

python变量中单下划线和双下划线的区别是什么

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习” 获取资料,一起学习

可以使用命令dir查看t中的属性和方法,__x的名字已经被重整为“_test__x”了,如果你非要通过外部访问,也是可以的,可以使用t._test__x对__x进行访问。

python中没有真正的公有和私有变量,python只是对变量名称做了一个变化,还是可以在外部访问到的,是伪私有。

注:虽然私有变量可以通过_类名__变量名来访问,但强烈建议不要这样做!

二、使用不同方法导入模块,模块中私有变量的使用区别

在使用不同方法导入模块后,是否能使用模块中的私有属性和方法,有以下两种情况

使用 from somemodule import * 进行导入,不能导入私有变量,结果如下:

在使用 import somemodule 导入模块的情况下,能导入并使用私有属性和方法

三、对类中的私有属性进行操作的方法

如果你想对类中的私有属性进行操作时,有以下两种方法种方法:

python变量中单下划线和双下划线的区别是什么

python变量中单下划线和双下划线的区别是什么

注:

1,在构造函数__init__中是_x,不是x,你直接x是访问不到的;

2,为什么是_x 而不是x,这是python中的私有变量(虽然python中没有公有变量和私有变量,也就是说这是伪私有),在python中,如果一个变量不想被外部直接访问,一般是在变量前加一个下划线,提醒不要直接访问(其实是可以通过self._x访问到的,如果不想被访问还可以使用双下划线__x,也是不能直接访问)所以提供get_x这样的函数供使用者访问;

3,为什么要使用_x这样的伪私有变量,因为我们使用property时,让方法变成属性的方式来调用,一般是这样写x=property(...),这样调用更加清晰明了;但是如果构造函数中的变量也用x,就会和property中的变量有冲突,所有一般我们写_x

看完上述内容,你们掌握python变量中单下划线和双下划线的区别是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. Python中的单下划线和双下划线使用场景详解
  2. 怎么在python中使用单下划线(_)和双下划线(__)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:Python怎么爬取豆瓣复联4精彩评论

下一篇:Python命令行工具clint怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》