与面试官谈笑风生 | Python 面向对象之访问控制

2018-04-03 18:08:11 +08:00
 simpleapples
写了一篇关于 Python 访问控制的文章,请各位大佬鉴定一下。
https://juejin.im/post/5ac18d08f265da237b223d1a
5098 次点击
所在节点    Python
23 条回复
NoahNye
2018-04-03 20:19:33 +08:00
学 py 的时候看过这段,严格来说 py 是没有私有的,通过下划线其实是提醒后来人谨慎使用该变量。
u14e
2018-04-03 20:53:07 +08:00
楼主要想搞个大新闻,还是找点有深度的主题吧!这东西任何一本入门书都有讲解
chroming
2018-04-03 20:55:20 +08:00
讲 py3 源码才能在 v 站立足
codehole
2018-04-03 20:56:21 +08:00
标题赞一个
xpresslink
2018-04-03 23:07:55 +08:00
谢谢楼主不辞辛苦跑来告诉大家母鸡是会下蛋的。
只是哲学不同,我们都认为自己是成年人。
xnth97
2018-04-04 07:04:58 +08:00
感谢 + 没有帮助(
blless
2018-04-04 08:34:20 +08:00
这篇真的有点水了… python 不了解这个特性可以说是完全不会 python 吧…
blless
2018-04-04 08:35:14 +08:00
真正访问控制应该是 @property
wivwiv
2018-04-04 08:50:40 +08:00
快出去走道里看看 看到墙上有火警报警按钮没,会不会误触?非要按能不能按下去?但是你应不应该按?
lyroge
2018-04-04 09:12:16 +08:00
基础文章,还不错 ; ) 可以看看描述符之类
nov
2018-04-04 09:17:26 +08:00
@xpresslink 只是哲学不同,我们都认为自己是成年人,这句话什么意思?
gitgabige
2018-04-04 09:43:58 +08:00
写得可以,之前一直把 python 当脚本来写的,面向对象没用过
ericls
2018-04-04 09:45:43 +08:00
everything is available at runtime
scriptB0y
2018-04-04 10:04:35 +08:00
正确的访问控制应该使用 __getattr__ __setattr__

自定义的方法或变量在任何时候都不应该使用 __foo__ 的形式。js 社区前短时间好像在争执 Array.prototype.flatten 的方法问题,因为和有个库定义了 flatten,js 如果加入这个的话会冲突。所以有人提议我们用 smoosh (笑)

Python 就没有这个问题,只要大家老老实实把魔术方法保留给 Python 语言。
xpresslink
2018-04-04 10:07:45 +08:00
@nov 和 9 楼一个意思。
ahaxzh
2018-04-04 10:10:26 +08:00
配图用个 C++//
GeruzoniAnsasu
2018-04-04 13:30:11 +08:00
。。。。。。。。。。。任何一本 python 入门数都会讲的东西
GeruzoniAnsasu
2018-04-04 13:30:45 +08:00
如果对这个都不了解换我我可能直接拒了
aa825aa
2018-04-04 14:34:11 +08:00
1、_xxx 不能用于’ from module import *’ 以单下划线开头的表示的是 protected 类型的变量。即保护类型只能允许其本身与子类进行访问。
2、__xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也不可以
aa825aa
2018-04-04 14:35:33 +08:00
"""是一种约定的规范,而不是语言层面真的实现了访问控制...""" lz 搞笑吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/444031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX