我是使用Python作为OOP的新手段。我来自Java背景。你将如何在python中编写一个javabean等价物?基本上,我需要一个类:在Python中相当于JavaBean
- 实现可序列化。
- 有getter和setter - >私有财产
- 虚拟构造
任何投入?我正在寻找一个示例代码!
我是使用Python作为OOP的新手段。我来自Java背景。你将如何在python中编写一个javabean等价物?基本上,我需要一个类:在Python中相当于JavaBean
任何投入?我正在寻找一个示例代码!
你不这样做,因为Python is not Java。最有可能的是,你应该只写一个不太平凡的课,构建一个namedtuple,通过一本字典或类似的东西。但是,为了回答这个问题:
serializable
也不是“实现接口”使在Python意义(当然,在一些框架和它先进的用例,但不是在这里)。序列化模块(如pickle
)的工作不需要实现或继承任何特殊功能(您可以用其他方式自定义过程,但几乎不需要)。property
。AttributeError
)。+1:我刚才提到那篇文章(“Python不是Java”)。 – 2013-02-20 20:28:12
Lol,刚刚发布的文章链接... – flaviotruzzi 2013-02-20 20:32:19
谢谢。我试过Python,我的代码只有一半大小。谢谢!我刚刚找到了一种美妙的语言。我处在一个泡沫中,Java变得更好了! – stealthspy 2013-02-24 01:37:39
示例构造 '链':
>>> 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具有完全不同的文化,它需要一些时间来潜入(并欣赏)两者。
此外,编写一些代码之后,它可能有助于其与常见的成语,如这里列出的(当然,我学到了很多这样):
非常感谢回复。 – stealthspy 2013-02-24 01:37:57
实现可序列化。
选择你喜欢的格式,并编写一个函数,将它序列化为你。 JSON,Pickle,YAML,任何工作。只要决定!
有getter和setter - >私有财产
我们不这样做,在这里,那些是束缚语言的属性,我们在所有使用这种语言的成年人。
虚拟构造
同样不是我们真正担心的是我们的构造比其他语言更聪明一点。所以你可以定义一个__init__
,它可以完成所有的初始化,如果你必须写一个工厂或子类。
正如指出由三苦:
目的可以通过picke模块被序列化,但没有被实现的接口,Python是不是Java。
在Python中没有私有属性,通常人们使用bar(下划线)表示私有属性,但它们可以从外部访问。吸气剂和吸附剂会浪费CPU和程序员的时间。
没有添加到miku答案。
有关属性:Real world example about how to use property feature in python?
谢谢大家。在这里解决我的查询。 – stealthspy 2013-02-24 01:39:11