JavaBean在Python中是等效的
我是使用Python作为OOP的新手。 我来自Java背景。 你将如何在python中编写一个javabean等价物? 基本上,我需要一个类:
任何投入? 我正在寻找一个示例代码!
你不这样做,因为Python不是Java。 很可能你应该写一个不太平凡的类,构造一个namedtuple,传递一个字典或类似的东西。 但要回答这个问题:
serializable
还是“实现接口”在Python中都是有意义的(在一些框架和高级用例中,它不是这样)。 序列化模块(如pickle
)在没有实现或继承任何特殊功能的情况下工作(您可以用其他方式自定义进程,但几乎不需要)。 property
。 AttributeError
时,它会引发AttributeError
)。 构造函数'chain'的例子:
>>> class A(object):
... def __init__(self):
... print("A")
...
...
>>> class B(A): pass # has no explicit contructor
...
>>> b = B()
A
>>>
而且 - 正如@delnan写道的 - 你可能想要阅读:http://dirtsimple.org/2004/12/python-is-not-java.html - Java和Python有不同的文化,潜水需要一些时间进入(并欣赏)两者。
另外,在编写代码之后,将其与常见习惯用法进行比较可能会有所帮助(如下所示)(我肯定了解了很多):
实现可序列化。
选择你喜欢的格式,并编写一个函数,将它序列化为你。 JSON,Pickle,YAML,任何工作。 只要决定!
拥有getter和setter - >私有属性
我们在这里不这样做,那些是束缚语言的属性,我们都是用这种语言的成年人。
虚拟构造函数
再次,不是我们真正担心的事情,因为我们的构造函数比其他语言稍微聪明一些。 所以你可以定义一个__init__
,它可以完成所有的初始化,如果你必须写一个工厂或子类。