Python 2.6.2でルックアップテーブルを含むクラスを作成しています。ほとんどの場合、テーブルにはデータが含まれているほど単純です。いくつかのケースはより複雑で、私は機能を呼び出せるようにしたい。しかし、私は関数を参照するいくつかのトラブルに走っています。Pythonのクラスリストのクラスメソッドを参照しています
ここではいくつかのサンプルコードです:
class a:
lut = [1,
3,
17,
[12,34],
5]
lut
は静的であり、同様に一定であると期待されています。
、今、私は次の操作を実行するためにWAN:
class a:
def spam0(self):
return (some_calculation_based_on_self)
def spam1(self):
return (a_different_calculation_based_on_self)
lut = [1,
3,
17,
[12,34],
5,
self.spam0
self.spam1]
self.spam0
とself.spam1
が定義されていないので、これはコンパイルされません。私はa.spam
を使ってみましたが、それも未定義です。 lut[5]
にself.spam
への参照を返すように設定するにはどうすればよいですか?
編集:これは私が行う予定です:
(class a
の定義を継続): インポートは、だから私は、単純な値を返すか、いくつかを実行するかしたい
# continue to somewhere in the definition of class a
def __init__(self, param):
self.param = param
def eggs(self):
tmp = lut[param]
if (insect.isfunction(tmp)): # if tmp is self.spam()
return tmp() # should call it here
return tmp
を検査余分なコードは、パラメータによって異なります。
編集:lut
はクラスプロパティである必要はありませんが、方法spam0
とspam1
は、クラスメンバにアクセスする必要がないので、彼らはクラスに属する必要があります。
これを行うには、これが最善の方法であるかどうかはわかりません。私はまだこの作業を進めています。
ご質問をお聞かせください。私たちの大半は、あなたが必要とするものを理解していないようです... – giorgian
オブジェクトが構築されたときにパラメータが提供されるので、これは賢明ではありません。 "lut"ビジネスは '__init__'で実行され、最終的な値が計算されます。 "eggs"メソッドは、 '__init__'で計算された値を返す単純なプロパティです。あなたのデザインは不完全でなければなりません。より完全なコードスニペットを提供してください。 –
問題をよりよく理解するために、さらに多くの質問があります。1)「静的」でない、つまり、インスタンスの寿命中に変更されますか? 2)メンバーはメソッドをバインドする必要があるか、単純な関数にすることができますか? 3)クラスプロパティでなければならない? 4)どのバージョンのpythonについて話していますか? 5)これは、あなたがしなければならないことを達成するための唯一の/最良の方法だと確信していますか? – giorgian