0
我有一個包含列表和一些布爾方法的類。從變量調用新對象的方法
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
有沒有辦法做到這一點不打開所有的標誌爲靜態方法?
=== 編輯:使工作在一個非常hackish的方式:
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 __()'中的類級可變變量被「填充」時,你的意思是「用期望的值替換」,在這種情況下,它可能應該有不同的默認值,以包含所需的值「,在這種情況下,每個實例將具有相同的數據? – mwchase
@mwchase,我的意思是'def __init __(self,value):self.data = value' – pashadia