2016-03-27 31 views
1

假設我有2個類「Task」和「Day」。任務將具有該任務的名稱,然後通過「add_task」,可以有多次出現同一任務(例如每週游泳3次)。我如何讓班級「日」(比如星期一)檢查在同一時間段內兩個任務之間是否存在衝突?來自不同類的Python調用方法

class Task(object): 
     def __init__(self,name,type): 
      self.name = name 
      self.type = type 
      self.instances = 0 
      self.start = 0 
      self.end = 0 
      self.total_time = [] 

      def add_task(self,day,start,end): 
     self.day = day 
     monday.add_new_task(self,start,end) 
     self.start = start 
     self.end = end 
     self.instances += 1 
     self.total_time += [start,end] 



class Day(object): 
    time_available = [] 
    check_time = [] 
    def __init__ (self): 
     for i in range(24): 
      self.time_available.append(i) 
    def add_new_task (self,start,end): 
     print start 
     print end 
     if self.time_available.__contains__(self,start): 
      print "Contains" 

add_new_task的邏輯被簡化了,但這是一般的想法。 我是python的新手,所以語法是我熟悉的東西。

+0

什麼是「時間」的表示?這是幾秒鐘的時間嗎? –

+0

時間以小時爲單位,並且是例如14-16的「段」,現在保持簡單 – algoBaller

+1

您標題似乎沒有相關性。你需要的是間隔樹,如果我理解正確。 – HuStmpHrrr

回答

0

爲了解決這個問題,你需要使用一個類變量,它是一個在類內部和類外定義的變量。在以下示例中,time是類Day的類變量;您可以訪問類變量,即time作爲Day.time

類變量在某種程度上獨立於類實例。例如,假設dDay的一個實例,d.timeDay.time之間存在細微但重要的差異。以下示例可幫助您理解它。

class Day(object): 
    """docstring for Day""" 
    time = {'name':'Allen'} 
    def __init__(self, arg): 
     self.arg = arg 


class Task(object): 
    """docstring for Task""" 
    def __init__(self, arg): 
     self.arg = arg 

print Day.time # Prints {'name': 'Allen'} 
d = Day(10) 
d.time = 12 
print d.time # Prints 12 
print Day.time # Prints {'name': 'Allen'} 

您可能會發現更多關於類變量和實例變量here

+0

我編輯了我的代碼^顯示了我正在嘗試做的事情,它給出了語法錯誤,我有一種感覺我正在做一些非常錯誤的事情,但這正是我想要做的。 – algoBaller

+0

顯然存在縮進錯誤。另一個錯誤是你試圖使用self來訪問類變量。 –

+0

'self.time_available'是一個實例變量,將其替換爲'Day.time_available' –