我想知道为什么Python不完全面向对象。例如,它不支持私有,公共,受保护的访问级别修饰符。
这有什么优点和缺点?通过这些表达式,Python适用于哪些应用程序(桌面,科学,Web或其他)?
Python不支持强 封装 ,它只是与术语“面向对象”相关的众多功能之一。
答案仅仅是哲学。Guido不喜欢隐藏事物,Python社区中的许多人都同意他的观点。
问题内容: (用Python shell编写) 为什么不允许对象向其添加属性? 问题答案: 请注意,实例没有属性: 一个在派生类中说明此行为的示例: 引用以下文档: […]声明采用一系列实例变量,并在每个实例中仅保留足够的空间来为每个变量保存一个值。因为未为每个实例创建空间,所以节省了空间。 编辑:要从评论中回答ThomasH,OP的测试类是“旧式”类。尝试: 您会注意到有一个实例。对象类可能没有
问题内容: (注:编辑过的问题;先前的意图不明确) 考虑以下代码: 此代码可以正常工作。 但是,如果我替换: 与: 然后编译器抱怨: java:/path/to/Foo.java:whatever:枚举开关大小写标签必须是枚举常量的非限定名称 (要求内联常量的一个原因是switch语句在每种情况下都需要常量,并且两个这样的常量值可能都不相同。编译器在编译时检查switch语句中是否有重复的常量值;
(注:经编辑的问题;事先意图不明确) 与: 在JLS的什么地方定义了语句中的值必须以这种方式编写?
问题内容: 全局变量在Python中如何工作?我知道全局变量是有害的,我只是在做实验。 这在python中不起作用: 我收到一个错误: 我究竟做错了什么? 问题答案: 您需要声明: 在Python中, 您分配的 变量默认情况下成为局部变量。您需要使用将它们声明为全局变量。另一方面,您 引用但未分配的 变量不会自动成为局部变量。这些变量指的是封闭范围内最接近的变量。 Python 3.x引入了类似于
问题内容: Goetz的Java Concurrency in Practice ,第41页,提到了在构造过程中如何逃避引用。“请勿执行此操作”示例: 这是通过引用封闭实例的事实进行的“转义” 。可以通过使用静态工厂方法(首先构造普通对象,然后注册侦听器)而不是公共构造函数(完成所有工作)来解决这种情况。这本书继续说: 从其构造函数中发布对象可能会发布不完整构造的对象。这是真实的 ,即使是公布在构