在Python类中对函数进行字母排序

9
警告,这是一个纯粹的懒惰查询!随着我的项目发展,类中的函数数量也在增加。我每个.py文件中还有许多类。因此,我希望重新排序它们,使函数名称按字母顺序组织[抱歉,我在英国,已经与“字母表”中的“z”做出了巨大妥协;-)]。
例如,当前情况为:
class myClass():
    stuff
    def __init__():
        do stuff
    def b():
        also do stuff
    def c():
        do other stuff
    def a():
        do even more stuff

为了方便查找,我想重新排列为:

class myClass():
    stuff
    def __init__():
        do stuff
    def a():
        do even more stuff         
    def b():
        also do stuff
    def c():
        do other stuff

仅出于美观原因,因为这使得寻找相关函数更加直观。我显然希望保留类顶部的init()等内容。

现在,我可以(但尚未)使用Python脚本来读取包含类的.py文件作为文本文件,并进行大量字符串操作。但我想知道是否有更好的方法?也许有一个工具可以使用吗?我已经搜索过了,但我真的找不到可以使用的东西。

我正在使用emacs,所以也许有一个大的5分钟键组合序列可以完成神奇的事情(eg),但我在python-mode中看不到任何东西!

最后,我希望能够以某种方式可视化和宣传类结构/文档字符串。

当我说可视化结构时,我的意思是,例如,当myClass.a()调用myOtherClass.g()时,这将成为一个链接,因此我将能够看到谁调用了谁,无论是按类别还是整体来查看(即,myClass使用哪些函数/类?),或者整体上是如何“连接”的(这里有一堆文件,它们是如何“连接”的?)
当我说公开类时,我想我指的是类似于eg1,eg2中看到的API文档。

7
它使搜索相关功能更加直观。不,它并没有。这很令人困惑。方法函数应该按其作用进行分组,而不是按其拼写方式进行分组,包括构造函数,访问器和操纵器。 - S.Lott
2个回答

7

我没有解决你的问题,但我的观点很强烈:如果你的类中方法数量变得如此之多,以至于你很难找到它们,那么你应该考虑减少数量,也许是通过将类分成较小的类来实现。

与函数和方法适用的相同的内聚原则同样适用于类。


3
我不确定按名称排序方法是否是个好主意:
当浏览OLE对象时,您会看到这种情况,很难理解任何内容,因为相关的方法都分散在各处,因为它们没有以相同的字母开头。
例如,我宁愿在“close”之前看到“open”,而不包括其他无关的方法。
你的问题是如何轻松列出/查看类中的函数?
以下是我在emacs中使用的简单技巧:
M-x occur regex: ^ *def
试试看...(同样适用于某些其他语言,只需使用不同的正则表达式(例如:“^sub”))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接