2016-03-27 61 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' –