我有一個繼承自OrderedDict的類,但我不知道這是否是正確的方式來完成我所需要的。在Python上掩蓋函數的方法對象
我希望該課程具有javascript'。'的決鬥方法。象obj.<property>
這樣的符號,我也想讓用戶能夠訪問像obj['myproperty']
這樣的類屬性,但是我隱藏了所有的key()和get()函數。繼承模型提供了很好的功能,但它使用其他不真正需要的方法混淆了對象。
有沒有可能得到字典的行爲沒有所有其他功能?
爲了便於討論,我們假設我的課是這樣的:
from six.moves.urllib import request
import json
class MyClass(OrderedDict):
def __init__(self, url):
super(MyClass, self).__init__(url=url)
self._url = url
self.init()
def init(self):
# call the url and load the json
req = request.Request(self._url)
res = json.loads(request.urlopen(req).read())
for k,v in res.items():
setattr(self, k, v)
self.update(res)
self.__dict__.update(res)
if __name__ == "__main__":
url = "https://sampleserver5.arcgisonline.com/ArcGIS/rest/services?f=json"
props = MyClass(url=url)
props.currentVersion
是否有另一種方式來處理這個難題呢?
感謝
@LutzHorn我看到這篇文章,我覺得它是不同的。 –
@LutzHorn - 我知道,但我覺得這應該是更多的應該字典用於繼承模仿括號方法和JS點符號比'私人'。我認爲你很快就會反彈:) –
那麼也許不要使用繼承,而是一個門面。 – 2016-05-31 14:02:43