Python 类“list”未定义“\uuuu mod\uuuu”,因此无法使用“%”运算符

Python 类“list”未定义“\uuuu mod\uuuu”,因此无法使用“%”运算符,python,fabric,Python,Fabric,我需要在结构任务中动态设置主机环境 我试过这个: env.hosts = ['%s'] % server_ip_var 但我得到了这个错误: 类“list”未定义“mod”,因此不能使用“%”运算符 在其实例上使用较少 此检查检测应解析但不解析的名称。由于 动态分派和duck类型,这在有限的时间内是可能的,但是 有用的案例数量。支持顶级和类级项目 优于实例项 有点不清楚您要求的是什么,但将对象转换为字符串可以通过多种方式实现。如果变量可以转换为字符串,则可以使用str函数: env.hosts

我需要在结构任务中动态设置主机环境

我试过这个:

env.hosts = ['%s'] % server_ip_var
但我得到了这个错误:

类“list”未定义“mod”,因此不能使用“%”运算符 在其实例上使用较少

此检查检测应解析但不解析的名称。由于 动态分派和duck类型,这在有限的时间内是可能的,但是 有用的案例数量。支持顶级和类级项目 优于实例项


有点不清楚您要求的是什么,但将对象转换为字符串可以通过多种方式实现。如果变量可以转换为字符串,则可以使用str函数:

env.hosts = [str(server_ip_var)]
另一个更好的方法是使用:


如果您确实想这样做,您可以将list子类化:


删除括号:env.hosts='%s'%server\u ip\u var。或者使用括号:env.hosts='%s'%server\u ip\u var%是字符串运算符:env.hosts=['%s'%server\u ip\u var],如果您需要字符串列表。@chepner我可以接受这个答案吗?
env.hosts = ["{}".format(server_ip_var)]
class FormattableList(list):
    def __mod__(self, *args, **kwargs):
        return list(x.__mod__(*args, **kwargs) for x in self)


print(FormattableList(['a: %s', 'b: %s']) % 123)