Python将boolean连接到字符串不起作用

时间:2017-10-24 06:35:55

标签: python string boolean concatenation

作为程序的一部分,我编写了以下方法(hidden是一个布尔变量)。它位于名为DelMsg的对象中,该对象继承了一个名为info_msg()的类型。 def info_msg(self): info = DelMsg.info_msg(self) if self.code == 'l': # If message is long message return info + '#' + str(len(self.content)) + '#' + str(self.hidden) elif self.code == 'm': # If message is snap message return info + '#' + str(self.timeout) + '#' + self.content else: # If message is a normal message return info + '#' + self.content + '#' + str(self.hidden) 覆盖并在其父类型中使用类似的方法。

TypeError: cannot concatenate 'str' and 'bool' objects

但是每次调用方法(来自对象实例)时,它都会显示错误:hidden,并说错误在最后一行,即使{{1}}被解析为字符串。< / p>

有没有办法在不使用条件的情况下解决这个问题?

2 个答案:

答案 0 :(得分:1)

以下是您可以继续调试代码的方法:

  1. 检查变量的类型:
  2. 编辑您的代码以包含以下public static void showAlert(Context context,String title,String message) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); alertDialogBuilder.setTitle(title); alertDialogBuilder.setMessage(message); alertDialogBuilder.setCancelable(false); alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); final AlertDialog alertDialog = alertDialogBuilder.create(); //Here's the magic.. //Set the dialog to not focusable (makes navigation ignore us adding the window) alertDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); alertDialog.show(); //Set the dialog to immersive alertDialog.getWindow().getDecorView().setSystemUiVisibility( ((Activity)context).getWindow().getDecorView().getSystemUiVisibility()); //Clear the not focusable flag from the window alertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); }

    print(type(variable))

    然后,运行程序并查看哪个其他变量是布尔值。

    1. def info_msg(self): print(type(info)) print(type(self.content)) return info + '#' + self.content + '#' + str(self.hidden) 添加到布尔变量
    2. 最多,所有变量都是boolean类型,因此您可以按如下方式编辑代码:

      str(...)

      另一个选择是使用def info_msg(self): return str(info) + '#' + str(self.content) + '#' + str(self.hidden) ,它将负责将变量转换为字符串:

      str.format

答案 1 :(得分:0)

可能infocontent也是布尔值。你可以用

克服这一点
def info_msg(self):
    return str(info) + '#' + str(self.content) + '#' + str(self.hidden)