2017-10-17 37 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())