【发布时间】:2017-02-25 21:14:41
【问题描述】:
这与我在此站点上发现的类似问题不同,因为相关代码在字符限制之前没有任何运算符或括号,可以轻松拆分。我在 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 个字符。
处理这个问题的首选方法是什么?
【问题讨论】:
-
为什么这段代码需要访问
self.caller.parent.parent.parent.caller.parent.bar.ids.actionview?这听起来像是一个可怕的程序结构。 -
@user2357112 是的,我希望找到另一种方法来做到这一点,但 kivy 环境的工作方式某些小部件(例如弹出窗口)将主程序窗口作为父窗口,而不是创建它们的对象,因此我还没有想出一种方法来从对这些分离对象的函数调用中处理小部件。当用户继续执行程序时,我需要动态创建和销毁小部件,这是迄今为止我提出的唯一解决方案。话虽如此,我显然是 OO 编程的新手,我确信有更好的方法。
-
.仍然是运营商。而且你总是可以用括号括起来整个表达式。至于首选 - 那是固执己见,但是:a)不要编写这样的代码,或者 b)如果必须,将其分解为一些变量,与 cmets 发生什么。
标签: python