【发布时间】:2014-01-11 19:44:12
【问题描述】:
为了便于讨论,假设我想从dictionary 写入和读取值,但我想将一些字符串附加到字典键。我不想让用户进行字符串操作,而是想将其隐藏在 setter 和 getter 方法中。这对 Python setter 方法没有问题,因为我可以发送一个包含可解析信息的列表。但是,它不适用于getter 方法,因为参数不能发送到getter。我已经制定了如下所示的解决方法,其中getter 返回一个接受参数并执行我想要的函数的函数。我只是想知道这个 Python 是否可以接受,或者我是否会后悔使用这种方法。
class tester(object):
def __init__(self):
self._dict = {}
def _set(self,some_list):
self._dict.update({some_list[0]+'_'+some_list[1]: some_list[2]})
def _get(self):
return self._func
def _func(self,key1,key2):
keys = key1+'_'+key2
return self._dict[keys]
props = property(_get, _set)
a = tester()
value = [1,2,3,4,5]
a.props = ('main_key','sub_key',value)
print(a.props('main_key','sub_key'))
我已经到处搜索了适合我需要的 setter 和 getter 的使用方法,但我看到的只是人们断言 Python 不需要它们,我们都应该只是成年人并访问属性直接地。我找到的最接近的是question,但我发现我的解决方案更直接。
【问题讨论】:
-
我不认为这本身有什么问题。而且由于它封装得很好,我真的看不出你有任何问题。恕我直言,这样做有点奇怪=)
-
你也可以使用
__getitem__和__setitem__ -
@Faust:我讨厌要求太高,但可以详细说明你的建议,或者给我举个例子吗?
-
@2cynykyl 我已经回答了给你一个例子。
标签: python properties getter getter-setter