Python 中的 JavaBean 等效项

2022-09-01 20:34:43

我对使用Python作为OOP是相当陌生的。我来自Java背景。你会如何在python中编写javabean等价物?基本上,我需要一个类:

  1. 实现可序列化。
  2. 具有 getters 和 setters -> 私有属性
  3. 虚拟构造函数

任何输入?我正在寻找一个示例代码!


答案 1

你没有,因为Python不是Java。最有可能的是,你应该写一个不那么琐碎的类,构造一个命名图,传递字典,或类似的东西。但要回答这个问题:

  1. 在Python中,“实现接口”都没有意义(好吧,在某些框架和高级用例中,它有意义,但在这里没有意义)。序列化模块(如 pickle)无需实现或继承任何特殊内容即可工作(您可以通过其他方式自定义该过程,但几乎永远不需要)。serializable
  2. 你不写 getter 和 setter。您只需使用公共属性。如果你以后需要一个非平凡的 getter/setter,你可以把它变成一个透明的。property
  3. 不需要虚拟构造函数,除非您要创建属性并为其设置默认值。但这可能是一个坏主意(对于一个豆类),因为不为这些属性分配值很可能是一个错误,即使不是,也是可疑的。因此,只需让Python为您捕获这些错误(当访问不存在的属性时,它会引发)。AttributeError

答案 2

好吧,我认为数据类类似于Java bean,使用它们实际上是一个好主意,因为它消除了样板。