在Python类中按字母顺序排列函数

9 投票
2 回答
3272 浏览
提问于 2025-04-15 17:05

警告,这个问题有点懒惰!随着我的项目发展,类里面的函数数量也在增加。而且每个.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,所以也许有个五分钟的快捷键组合可以解决这个问题(比如说),但我在python模式下没看到任何相关的!

最后,我想要一种方法来可视化和展示类的结构和文档字符串。

当我说可视化结构时,我的意思是,比如说,myClass.a() 调用 myOtherClass.g(),那应该是一个链接,这样我就能看到哪些调用了哪些,不管是按类来(也就是说,myClass用到了哪些函数/类?)还是整体来看(这里有一堆文件,它们是怎么“连接”的?)

当我说展示类时,我想的可能是你在 例如1例如2 看到的API文档那种。

2 个回答

3

我觉得按名字排序方法并不是个好主意:

你在浏览OLE对象时会看到这种情况,相关的方法分散得很乱,因为它们的名字开头字母不一样,根本搞不清楚。

我更希望看到“open”紧跟在“close”前面,比如说,中间没有其他不相关的方法...

你的问题是想要轻松列出或查看你类里的函数吗?

这里有个我在emacs里用的简单技巧:

M-x occur

正则表达式:^ *def

试试看...(在其他一些语言中也可以用类似的方法,只是正则表达式不同,比如:“^sub ”)

7

我没有办法直接解决你的问题,但我有一个很强的看法:如果你发现一个类里面的方法数量太多,以至于你很难找到它们,那你应该考虑减少这个数量,可能可以把这个类拆分成几个小的类。

对于函数和方法的凝聚力原则,同样也适用于类。

撰写回答