请原谅我的noob地位,但我遇到了一个我不太了解的构造,希望有人能为我解释。嘲讽继承方法
class Base(object):
def mogrify(self, column):
return self.mogrifiers.get(column.lower().strip()) or (lambda x: x)
...
class MyClass(some.package.Base):
def mogrifiers(self):
return {
'column1': (lambda x: datetime.datetime.fromtimestamp(int(x)))
}
...
class MyOtherClass(object):
def convert_columns:
...
new_row[colkey] = self.myclass.mogrify(colkey)(value)
这一切工作,但我试图写一个单元测试,并模拟出MyClass
。
据我所知,mogrifiers返回所有列和任何所需的转换字典。
我正在测试的代码调用mogrify(从Base类继承)与字符串中的特定列名称。
这试图从字典中提取列并返回lambda函数?或者如果它不存在于字典中,它会返回一个只给出字符串的lambda表达式?
所以,我只是在我试图测试的代码中留下了(值)位。目前尚不清楚它的功能。
如果我不想测试底层的转换/转换,我的模拟可能会返回简单的lambda。
所以我这样做,但将在电话会议上的例外mogrify说:
E TypeError: 'str' object is not callable
任何人都可以提供一些线索什么,我在这里失踪?