小编Pos*_*osa的帖子

Java clone()方法是实现多态克隆的唯一方法吗?

我需要我的装备多态克隆(深层副本)类,即我需要的是这样的工作:

SuperType original = new SubType();
SuperType copy = original.clone();
Run Code Online (Sandbox Code Playgroud)

其中original.clone()可以用任何机制代替创建深层副本,而实际类型copy应该是SubType,因为original它也是一个SubType.

clone()方法和Cloneable接口,实现这一目标的唯一途径?工厂方法和拷贝不能被用来构造函数,因为实际的类仅在运行时已知的,对不对?除了那些序列化 - 反序列化方法之外还有其他任何建议的方法,而Java深度克隆库是恕我直言的黑魔法甚至比clone()方法更糟糕吗?

谢谢,彼得

java clone deep-copy cloneable

6
推荐指数
1
解决办法
2043
查看次数

VCS 和 Python 项目结构:如何自动设置 PYTHONPATH?

网上有很多建议 Python 项目的结构可以/应该是什么,例如Python 应用程序的最佳项目结构是什么?.

"proj-dir"
+- doc
+- apidoc
+- scripts
+- "src-dir"
+- tests
Run Code Online (Sandbox Code Playgroud)

似乎 Python 世界中的许多人更喜欢“src-dir”和“proj-dir”相等(或非常相似)。但是,脚本和测试肯定必须从 src-dir 导入一些模块,所以要么我必须

  • 当 proj-dir 作为我当前的工作目录时运行所有脚本和测试,或者
  • PYTHONPATH 必须包含 proj-dir,对吗?

或者,还有其他我现在忽略的可能性吗?

假设我有这样的结构并正确设置了 PYTHONPATH。现在我将项目提交到 VCS 中,另一个开发人员检查了该项目。在他的机器上,PYTHONPATH 将无法正确设置,脚本和测试中的导入将无法工作。

  1. 是否有可能以某种方式使 PYTHONPATH 定义成为项目的一部分,以便它可以成为版本控制的一部分?
  2. 是否有不同的项目结构可以让我在不修改 PYTHONPATH 的情况下进行结账并开始使用项目?
  3. 是这里建议的解决方案:Python - How to PYTHONPATH with a complex directory structure?(即在每个脚本和测试中包含一个简短的 sys.path 修改片段)正确的吗?
  4. 站点模块http://docs.python.org/2/library/site.html会有帮助吗?
  5. 在开发具有类似结构的项目时,您的工作流程是什么?

version-control project-structure pythonpath

5
推荐指数
1
解决办法
478
查看次数