python之禅告诉我们:应该只有一种明显的方式来做到这一点。
当涉及到以下情况时,这很难付诸实践。
一个类接收一个文档列表。输出是每个文档的字典,其中包含各种键/值对。每对取决于先前计算的一个,甚至取决于列表中其他字典的其他值/对。
这是此类的一个非常简化的示例。
什么是“明显”的方法?每个方法都会为每个字典添加一个值/对。
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 组成,因此不添加属性。仅更新(添加 keine 对值)列表中的字典。
我看不出method1和static2之间的区别。
谢谢。