私は別の静的メソッドからクラスの静的メソッドを呼び出す状況に陥ります。確かに、私はX-Y質問をしない、私はいくつかの背景を与えることを試みている。Pythonのクラス内で静的メソッドを呼び出す
私は、データコンテナとコンテナ内のデータを変換するいくつかのメソッドを保持するクラスを持っています。私はまた、変換器は、クラスのインスタンスなしに外部から呼び出し可能なようにしたいように、私は、静的メソッドを選択します。
class SomeClass(object):
def __init__(self,some_data):
self.data = some_data
@staticmethod
def convert_1(data_item):
return 1+data_item
@staticmethod
def convert_2(data_item):
return 2*data_item
は、今私はSomeClass
のインスタンスを作成することなく、SomeClass.convert_1(data_item)
を行うことができます。
たとえば、SomeClass
の中にメソッドを2つ変換し、そのメソッドを静的メソッドにしたいとします。
は私がSomeClass
内部
@staticmethod
def combined_convert(data_item):
data_item = SomeClass.convert_1(data_item)
data_item = SomeClass.convert_2(data_item)
return data_item
を行うことができますか?私はクラスを独自の定義の中で呼んでいるので、これは間違っていると感じますが、別の「もっとpython的な」方法を考え出すことはできません。
クラスは 'combined_convert'を実行するときに問題がないように定義されます。 – thebjorn
クラスの* instances *は常に(selfで)メソッドから参照します。クラスを参照することがなぜ問題になるのでしょうか?構築中のクラスを参照することができない 'class'ステートメント内の最上位レベルのコードです。 – chepner
モジュール内で最上位レベルの関数を使用しようとしましたか?名前空間にクラスを使用しようとしているようです。 – Felk