为什么python没有像c#中那样的访问修饰符,java是public,private等什么是封装和信息隐藏在python中的替代方式。为什么python没有访问修饰符?在python中有什么替代方法?
回答
[Python的]有使用name mangling私有变量有限的支持。请参阅"Classes" section of the tutorial for details。许多 Python用户并不觉得需要私有变量。这个口号"We're all consenting adults here"用于描述这种态度。有些人认为信息隐藏是不合理的,在 ,它表明该类别包含不美观或 计划不周的内部。然而,名称 强化的最强争论是防止程序不可预知的破坏: 在超类中引入新的公共变量可能会破坏子类 ,如果它们不使用“私有”变量。
从教程: 由于是模块真正 ,在Python类没有一个绝对的屏障 定义和用户之间的,而是依赖于用户不 以“破坏定义的礼貌。 “
同样的情绪在012款The Hitchhiker’s Guide to Python!
另一种方法是命名描述你的“私人”(它们不是用Python真正私有的)使用标识符,可以轻松识别那些成员不应该从外面使用。
例如:
class RedmineWriter:
__server = None
__connected = False
...
...
...
但是,如果用户类真正想改变这些属性,他不会有任何问题。他的责任是不这样做。
看:http://docs.python.org/2/tutorial/classes.html#tut-private
双引号下划线会导致名称损坏,如果您希望子类不处理这些成员,这非常有用。如果没有子类,或者它们需要与这些成员进行交互(如许多静态语言中的'protected'),那么一个*单独的*前导下划线更加习惯。 – delnan
- 1. 为什么python对常量没有任何访问修饰符?
- 2. 属性访问修饰符;为什么以下工作没有?
- 3. 界面成员为什么没有访问修饰符?
- 4. 为什么oop语言没有“只读”访问修饰符?
- 5. 为什么没有“外部”访问修饰符?
- 6. 没有访问修饰符的方法
- 7. 访问说明符和访问修饰符有什么区别?
- 8. 为什么Java限制隐藏方法的访问修饰符
- 9. Java:为什么构造函数具有访问修饰符?
- 10. Python中的替代方法是什么?
- 11. 什么是访问修饰符
- 12. 访问修饰符 - 目的是什么?
- 13. 这种访问修饰符的方法的目的是什么?
- 14. 如何在Java中使用访问修饰符(为什么使用getter方法?)
- 15. 当Java中没有显式访问修饰符时,这意味着什么?
- 16. 为什么str在Python中没有__radd__方法?
- 17. 访问修饰符和访问说明符之间有什么区别
- 18. 什么问题? Python中没有打印
- 19. 为什么ABRecordCopyCompositeName是NULL,还有什么替代方法?
- 20. 有没有什么办法在Python中争夺字符串?
- 21. ByRef和Output方法参数修饰符有什么区别?
- 22. 为什么Python中没有uuid.uuid2?
- 23. 为什么Python中没有len(文件)?
- 24. 在Python中修改日期的有效方法是什么?
- 25. 当接口方法覆盖总是使用访问修饰符public为什么?
- 26. 什么时候在java中包私有(没有显式修饰)?
- 27. 访问修饰符“protected private”在visual C++中做什么?
- 28. Python中有什么?
- 29. 有什么方法可以替代Response.Write?
- 30. wmctrl有什么替代方法?
参见[这里](http://docs.python.org/3/tutorial/classes.html?highlight=private#private-variables)。 – Marius
因为Python不是C#或Java。为什么这些语言没有动态类型和重要的空白?因为他们不是Python。 –
@DanielRoseman我同意,但我理解它对于习惯于传统主流OO语言(如Java或C++)的人可能产生的震撼。当我开始学习python时,我感到震惊。 –