2017-10-17 8 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 

私のようにメソッドをリファクタリングすることを期待、詳細なタイピングを避けるつもり:メソッドは、出力

date:2017-10-17 time:11:50:27 ... 
呼び出されると

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) 

クラスを想定し

以上抽象的な:

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'を避ける)簡潔にするためつもりなら{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()) 
関連する問題