2017-05-31 6 views
-1

を分類するが、私はこのような関数を呼び出すことができるように機能 を分類するためにどのような方法があります:Pythonは機能

category something(): 
    def test(): 
     [Code] 

    def test2(): 
     [Code] 

something.test() 
something.test2() 

私はクラスを使用するのではと思ったが、彼らは常に、例えば、インスタンスを必要とするように思えます属性としての自己。

私が間違っている場合は、私を修正してもらえますか?私はPythonには新しく、その多くの経験はありません。

今のところ、別のファイルを使用していましたが、しばしば循環依存関係の問題に遭遇し、この問題の簡単な解決策があるかどうか尋ねました。

これは、少しコードを整理し、たくさんのコードを持っているときに、関数がsciptのどの部分に属するかを知るためのものです。

+0

「分類」機能の目的は何ですか?同じ名前の2つの関数を作成しますか?あるいは、同じ「もの/カテゴリ」に属するようにそれらを整理するだけですか? –

答えて

0

あなたが実際にインスタンスを必要としない - あなたは、各メソッドを宣言することができます(実際、または、に変換し)「静的」方法を:

class Foo: 

    @staticmethod 
    def Bar(x, y): 
     return x + y 

    @staticmethod 
    def Baz(x, y): 
     return x - y 

print(Foo.Bar(3, 4)) 

参照として最初の引数の解釈(通常は、必ずしもそうである必要はありませんが、selfと呼ばれます)は、静的メソッドでは発生しません。

しかし、静的メソッドでいっぱいのクラスを作成すると、classのややラベル外の使用になります。 Pythonでリソースを分類するために、より一般的な方法は、(つまり、個別のファイルおよび/またはディレクトリ)modules and packagesにそれらを分割することである。

# in Foo.py 
def Bar(x, y): 
    return x + y 

、その後:

>>> import Foo 
>>> Foo.Bar(3, 4) 
7 
+0

だから私は定義しているすべての関数の@staticmethodをinfrontと書かなければならないだろうか?または、クラス全体を最初からどこかに追加して静的メソッドにすることはできますか? –

+0

毎回デコレータを使用する必要があります。しかし、実際にはそうしないでください。残りのモジュールを使用してください。 – jez