2017-10-17 38 views
0

如何循環class定義體內的初始化屬性?在`class`定義體內循環初始化屬性

假定的類:

class WakeUp: 
    def __init__(self,date,time): 
     self.date = str(date) 
     self.time = str(time) 
     self.brush_teeth = brushteeth 
     . 
     . 

    def get_wakeup_activities(self): 
     return 'date: ' + self.date + 'time' + self.time. + 'brush_teeth', + self.brush_teeth 

我打算避免冗長的打字,期望重構方法爲:

def get_wakeup_activities(self): 
     act_list =() 
     for attr in attrs: 
      act_list.append(attr) 
     return 'date: %s time:%s brush_teeth: %s' %tuple(act_list) 

當該方法被調用時,輸出

date:2017-10-17 time:11:50:27 ... 

或更多摘要:

def get_wakeup_activities(self): 

    wakeup_dict = {k:v for k, v in self.attrs} 
    return wakeup_dict 

雖然調用命令:

today_wakeup = Wakeup 
today_wakeup.get_wakeup_activities() 

輸出:

{date:2017-10-17, time:11:50:27,....} 
+1

側面說明:如果你打算爲簡潔(避免類型'self'一遍又一遍)你可以使用現代字符串格式來實現此目的,將字符串版本更改爲'return'date:{0.date} time:{0.time} brush_teeth:{0.brush_teeth}'。format(self)'仍然重複標題和名稱,但它是一些東西。 – ShadowRanger

+0

一個實用的微調@ ShadowRanger –

回答

1
class WakeUp: 
    def __init__(self,date,time, brushteeth): 
     self.date = str(date) 
     self.time = str(time) 
     self.brush_teeth = brushteeth 

    def get_wakeup_activities(self): 
     return self.__dict__ 

today_wakeup = WakeUp('today', '8am', 'YES!') 
print(today_wakeup.get_wakeup_activities())