问题描述
蟒蛇之禅告诉我们: 应该只有一种明显的方法来做到这一点。
当涉及到以下情况时,这很难付诸实践。
一个类接收一个文档列表。 输出是每个文档的字典,其中包含各种键/值对。 每对依赖于先前计算的一个或什至来自列表的其他字典的其他值/对。
这是此类类的一个非常简化的示例。
“明显”的方法是什么?每个方法都会向每个字典添加一个值/对。
class T():
def __init__(self,mylist):
#build list of dicts
self.J = [{str(i):mylist[i]} for i in range(len(mylist))]
# enhancement 1: upper
self.method1()
# enhancement 2: lower
self.J = self.static2(self.J)
def method1(self):
newdict = []
for i,mydict in enumerate(self.J):
mydict['up'] = mydict[str(i)].upper()
newdict.append(mydict)
self.J = newdict
@staticmethod
def static2(alist):
J = []
for i,mydict in enumerate(alist):
mydict['down'] = mydict[str(i)].lower()
J.append(mydict)
return J
@property
def propmethod(self):
J = []
for i,mydict in enumerate(self.J):
mydict['prop'] = mydict[str(i)].title()
J.append(mydict)
return J
# more methods extrating info out of every doc in the list
# ...
self.method1() 是简单的运行并且一个新的键/值对被添加到每个字典中。 也可以使用静态方法2。 还有财产。
在我释放@property 的三种方式中,因为我没有添加另一个属性。 你会从另外两个中选择哪一个?
请记住,类将由数十个这样的 Methode 组成,因此不添加属性。仅更新(添加基因对值)列表中的字典。
我看不出method1和static2的区别。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)