Python中的JavaBean等价物

ste*_*spy 16 python java javabeans

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

  1. 实现可序列化.
  2. 有吸气剂和二传手 - >私人财产
  3. 虚拟构造函数

有什么投入?我正在寻找示例代码!

小智 29

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

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

  • +1:我刚刚提到那篇文章("Python不是Java"). (7认同)

Seb*_*ner 6

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