我在Python 3中实现了一个Javascript类,我想验证我的代码是否正确,以及如何进一步重构它。
这是Javascript代码:
class DbResult {
constructor(data) {
let self = this;
data = data || {};
self.status = data.status || 'info';
self.message = data.message || null;
}
static map(row) {
let dbResult = new DbResult();
if(!row) { return dbResult; }
for(let property in row) {
if(row.hasOwnProperty(property)) {
const name = property.replace(/_[a-zA-Z]/g, (match) => {
return match[1].toUpperCase();
});
dbResult[name] = row[property];
}
}
return dbResult;
}
module.exports = DbResult;
这是我的Python实现。我不确定我是否正确使用了lambda表达式。
import re
class DbResult:
def __init__(self, data):
if data is None:
data = {}
if data.status is None:
self.status = 'info'
else:
self.status = data.status
if data.message is not None:
self.message = data.message
@staticmethod
def map(row):
dbResult = DbResult()
if row is None:
return dbResult
for prop in row:
if row.has_key(prop):
name = re.sub("_[a-zA-Z]", lambda match: match[1].upper(), prop)
dbResult[name] = row[name]
return dbResult