与面试官谈笑风生 | Python 面向对象之访问控制 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
simpleapples
V2EX    Python

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

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

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

    Python 就没有这个问题,只要大家老老实实把魔术方法保留给 Python 语言。
    xpresslink
        15
    xpresslink  
       2018-04-04 10:07:45 +08:00
    @nov 和 9 楼一个意思。
    ahaxzh
        16
    ahaxzh  
       2018-04-04 10:10:26 +08:00
    配图用个 C++//
    GeruzoniAnsasu
        17
    GeruzoniAnsasu  
       2018-04-04 13:30:11 +08:00
    。。。。。。。。。。。任何一本 python 入门数都会讲的东西
    GeruzoniAnsasu
        18
    GeruzoniAnsasu  
       2018-04-04 13:30:45 +08:00
    如果对这个都不了解换我我可能直接拒了
    aa825aa
        19
    aa825aa  
       2018-04-04 14:34:11 +08:00
    1、_xxx 不能用于’ from module import *’ 以单下划线开头的表示的是 protected 类型的变量。即保护类型只能允许其本身与子类进行访问。
    2、__xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也不可以
    aa825aa
        20
    aa825aa  
       2018-04-04 14:35:33 +08:00
    """是一种约定的规范,而不是语言层面真的实现了访问控制...""" lz 搞笑吗
    simpleapples
        21
    simpleapples  
    OP
       2018-04-04 15:06:17 +08:00
    @aa825aa 这句话有什么问题吗?
    junnplus
        22
    junnplus  
       2018-04-04 17:47:49 +08:00
    这怕是不能谈笑风生吧
    qsnow6
        23
    qsnow6  
       2018-04-04 22:19:24 +08:00
    水到不行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     884 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 81ms UTC 22:23 PVG 06:23 LAX 15:23 JFK 18:23
    Do have faith in what you're doing.
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11940834-2', 'v2ex.com'); ga('send', 'pageview'); ga('send', 'event', 'Node', 'topic', 'python'); ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86