私はリストといくつかのブールメソッドを含むクラスを持っています。変数から新しいオブジェクトのメソッドを呼び出す
class Cls:
data = [] // populated in __init__()
def flag1(self):
def flag2(self):
def flag3(self): # these all return booleans, based on the data
私は、いくつかの方法でデータを操作する新しいデータにフラグを適用し、そして結果の数を数えて、パラメータのフラグの一つを取って、より高いレベルの機能を作成したいです。以下のような
何か:
def hof(self, fn):
count = 0
for i in range(1, 10):
new_obj = Cls(self.data+i)
if new_obj.fn():
count +=1
は、静的メソッドにすべてのフラグを回すことなく、これを実現する方法はありますか?
=== 編集:非常にハック方法で、それが動作製:
class Cls:
data = []
def __init__(self):
self.data = value
class flag1(self):
return True
class flag2(self):
return False
# The hackish part
flag_dict = {
1: flag1,
2: flag2,
}
def hof(self, flag):
count = 0
for i in range(1,10):
new_obj = Cls(self.data + [i])
if self.flag_dict[flag](new_obj):
count +=1
return count
しかし、それはハックのように思える、それはかなり理解できないのです。誰かがより良い方法を指摘できますか?
ありがとうございました。
何を試しましたか?何が起こったのですか?私がここにいる間、あなたがクラスレベルの可変変数が '__init __()'に "populated"されていると言うときは、 "望ましい値に置き換えられました"という意味ですか?その場合、おそらく違うデフォルトを持つべきです。すべてのインスタンスが同じデータを持つことになりますか? – mwchase
@mwchase、私は 'def __init __(self、value):self.data = value'のようなものを意味しました – pashadia