如果“显式优于隐式”,为什么Python中没有显式访问修饰符:Public,Protected,Private等?
我知道想法是程序员应该通过提示知道该怎么做-无需使用“蛮力”。但是,IMO的“封装”或“信息隐藏”不仅是要使人们远离,而且还是组织和结构的问题:您的开发层应该具有自定义的,明确界定的范围和边界,就像物理系统一样。
有人可以在这里为我提供可靠的解释,为什么在Python中这种隐含的访问限制不是隐式的,而是隐式的?
编辑:到目前为止,我已经看到了3个建议的答案,并且我意识到我的问题有两个部分:
例如,为什么没有关键字
private def myFunc(): dostuff....
而不是国际海事组织的丑陋和难以键入的下划线。但这不是重点。
更重要的是:
为什么这些访问修饰符仅是“建议”或提示而没有执行。以后很难改变吗?将“受保护”更改为“公共”非常简单-如果您的继承链复杂,设计困难,则设计很糟糕-应该完善设计,而不要依赖于易于编写的语言功能结构不良的代码。
强制使用访问修饰符后,您的代码将自动划分开-您知道某些段不在范围内,因此除非有必要,否则不必处理它们。而且,如果您的设计不好,并且发现自己不断将事物移入和移出不同的范围,那么该语言可以帮助您清理行为。
尽管我很喜欢Python,但我发现第二点是一个严重的缺陷。我还没有看到一个很好的答案。
private def whatever
在于,这class x: def whatever(self): pass
是的捷径class x: pass; x.whatever = lambda self: pass
,因此,基本上,您需要一个私人修改器来进行分配