だから私はOOPを使用してPythonでカレンダーを作るしようとしている、ここで私は月のクラスを設定しました:Pythonのループでクラスのインスタンスを作成していますか?
week_days=['Sat', 'Sun', 'Mon', 'Teu', 'Wed', 'Thu', 'Fri']
class Month(object):
#class variable.
days=[]
def __init__(self, label, numdays, starts_with):
self.label=label
count=week_days.index(starts_with)
for i in range(1, numdays+1):
self.days.append([i, week_days[count]])
count+=1
if count>6:
count=0 #loop around week_days
self.NMFD = week_days[count] #next month 1st day
それがうまく動作し、ここでは年のクラスです:
months_list=[('Jan', 31), ('Feb', 29), ('Mar', 31), ('Apr', 30)...]
class Year(object):
#class variable.
months=[]
def __init__(self):
FD= 'Sat'
for item in months_list:
m=Month(item[0], item[1], FD)
self.months.append(m)
FD = m.NMFD
#Debug...
print m.label
print m.days
print 'Next month first day =' + FD
print '\n'
if __name__ == '__main__':
year = Year()
Jan
[[1, 'Sat'], [2, 'Sun'], [3, 'Mon'], [4, 'Teu']...[30, 'Sun'], [31, 'Mon']]
Next month first day =Teu
Feb
[[1, 'Sat'], [2, 'Sun'], [3, 'Mon'], [4, 'Teu']...[28, 'Mon'], [29, 'Teu']]
Next month first day =Wed
Mar
[[1, 'Sat'], [2, 'Sun'], [3, 'Mon'], [4, 'Teu']...[30, 'Thu'], [31, 'Fri']]
Next month first day =Sat
Apr
[[1, 'Sat'], [2, 'Sun'], [3, 'Mon'], [4, 'Teu']...[28, 'Fri'], [29, 'Sat'], [30, 'Sun']]
Next month first day =Mon
May
[[1, 'Sat'], [2, 'Sun'], [3, 'Mon'], [4, 'Teu']...] #.....etc
:問題は、変数FD(初日)はm.NMFDに各反復で再割り当てされているが、ここでは出力ですが、数ヶ月は、いつも私がforループの前に提供日の土」で始めるということです
ネストされたリストの代わりに辞書やタプルを使用しようとしましたが、うまくいかず、Stack Overflowで満足のいく回答が見つかりませんでした。
なぜインスタンス変数の代わりに 'days'と' months'をクラス変数として定義していますか? – user2357112
すべての年に月があり、すべての月には日数があるので、クラス変数として宣言したほうが良いですが、違いはありません。 –
これは実際問題の根本原因です。 – user2357112