将PEP 448 Python 3.5代码转换为Python 3.4兼容

时间:2015-12-17 22:38:42

标签: python python-3.x dictionary

我有以下功能:

    def to_url(self):
    return {
        'ass_cls': self.model.__class__.__name__,
        **{local.name: getattr(self.model.src, remote.name)
           for local, remote in self.model.__class__.src.property.local_remote_pairs},
        **{k: v
           for k, v in self.model.__dict__.items()
           if not k.startswith('_') and k != 'src'},
    }

如何将这段代码转换为Python兼容的Python?

我相信,代码目前正在使用size,这是一个Python 3.5功能。

1 个答案:

答案 0 :(得分:3)

新的unpacking feature是3.4中不起作用的。

你必须使用旧的,更冗长的合并字典的方法。

def to_url(self):
    d = {'ass_cls': self.model.__class__.__name__}
    d.update({local.name: getattr(self.model.src, remote.name) 
        for local, remote in self.model.__class__.src.property.local_remote_pairs})
    d.update({k: v for k, v in self.model.__dict__.items()
        if not k.startswith('_') and k != 'src'})
    return d