我是使用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