如何在python中打断没有括号或运算符的长行?

如何在python中打断没有括号或运算符的长行?,python,Python,这与我在这个网站上发现的类似问题不同,因为有问题的代码在字符限制之前没有任何运算符或括号,因此无法轻松拆分。在python中,我有几行在79个字符之前没有运算符或括号的长行。例如: self.caller.parent.parent.parent.caller.parent.bar.ids.actionview.remove_widget(self.caller.parent.parent.parent.caller.parent.bar.ids.actionview.startbutton)

这与我在这个网站上发现的类似问题不同,因为有问题的代码在字符限制之前没有任何运算符或括号,因此无法轻松拆分。在python中,我有几行在79个字符之前没有运算符或括号的长行。例如:

self.caller.parent.parent.parent.caller.parent.bar.ids.actionview.remove_widget(self.caller.parent.parent.parent.caller.parent.bar.ids.actionview.startbutton)
上面的行在括号前有72个字符,并且在类中的函数定义中,因此每个嵌套级别的间距为4个字符,括号前有81个字符

处理这个问题的首选方法是什么?

以您的特定示例为例,我希望如果您首先解决了“使此代码可读”的问题,那么适合79个字符将是自然而然的

也就是说,您可以添加括号:

(self.caller.parent.parent
 .parent.caller.parent.bar
 .ids.actionview.remove_widget(
    self.caller.parent.parent
    .parent.caller.parent
    .bar.ids.actionview.startbutton)
)

为什么这段代码需要访问self.caller.parent.parent.parent.caller.parent.bar.ids.actionview?这听起来像是一个可怕的程序结构。@user2357112是的,我想找到另一种方法来实现它,但kivy环境的工作方式一些小部件,如弹出窗口,有主程序窗口作为父窗口,而不是创建它们的对象,因此我还没有找到一种方法来从这些窗口的函数调用中处理小部件分离的对象。我需要在用户通过程序进行操作时动态创建和销毁小部件,这是迄今为止我提出的唯一解决方案。话虽如此,我显然是OO编程新手,我相信有更好的方法。
仍然是一名操作员。你总是可以把整个表达式括起来。至于首选-这是自以为是的,但是:a)不要编写这样的代码,或者b)如果必须,将其分解为一些变量,并对正在发生的事情进行注释;至于可读性,我同意这确实不理想。不幸的是,我有深度嵌套的对象,并且我使用的kivy环境(据我所知)不允许您通过id访问对象,除非它们是在.kv文件中以静态方式定义的。我正在动态地创建和销毁对象,因此必须直接在层次结构中对它们进行寻址。然而,在我的脑海中,我甚至看不到恶意库如何阻止您执行类似于
mybar=self.caller.parent.parent.parent.parent.caller.parent.bar
的操作,然后从那里使用
mybar
。好的一点。。。我会的。