7

警告、これはまったくの怠惰なクエリです! 私のプロジェクトが発展するにつれて、クラス内の関数の数も増えます。また、.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 () などをクラスの一番上に置きたいと思っています。

これで、クラスが存在する .py をテキスト ファイルとして読み取り、大量の文字列操作を行う Python スクリプトを使用してこれを行うことができます(ただし、まだ行っていません)。しかし、これを行うためのより良い方法があるのだろうか?どこかに使えそうなツールがあるのでは?よく探しましたが、実際に使用できるものが見つかりません。

私はemacsを使用しているので、おそらく魔法を行う5分間の大きなキーの組み合わせシーケンスがあります()が、pythonモードでは何も見えません!

最後に、クラス構造/ドキュメントストリングを視覚化して公開できる方法が欲しいです。

構造を視覚化すると言うとき、たとえば、myClass.a() が myOtherClass.g() を呼び出す場所を意味します。これはリンクになるので、class-by-クラスベース (つまり、myClass が使用する関数/クラスは?) または全体 (ここにたくさんのファイルがありますが、それらはどのように「接続」されていますか?)

クラスを公開するというのは、 eg1eg2で見られる API ドキュメントのようなものを意味していると思います。

4

2 に答える 2

8

あなたの質問に対する解決策はありませんが、非常に強い意見があります。クラス内のメソッドの数が非常に多くなり、それらを見つけるのが困難な場合は、おそらくクラスをより小さなクラスに分割して、数を減らすことを検討する必要があります。もの。

関数とメソッドに適用されるのと同じ結合の原則が、クラスにも適用されます。

于 2009-12-16T13:57:11.620 に答える
3

メソッドを名前で並べ替えることがそれほど素晴らしいアイデアかどうかはわかりません:

これは、OLE オブジェクトを参照するときに表示されるものであり、関連するメソッドがいたるところにあるため、何かを理解するのは非常に困難です。それらは同じ文字で始まるわけではないからです。

たとえば、「閉じる」の直前に「開く」を表示したいのですが、間に他のすべての無関係なメソッドはありません...

あなたの問題は、クラス内の関数を簡単にリスト/表示することですか?

これは私が emacs で使用する簡単なトリックです:

Mx発生

正規表現: ^ *def

試してみてください... (正規表現が異なる他の言語でも同じことが機能します (例: "^sub ")

于 2009-12-16T14:06:47.393 に答える