来自不同类

时间:2016-03-27 23:42:36

标签: python oop

假设我有两个班级"任务"和" Day"。任务将具有任务的名称,然后通过" add_task"你可以多次出现同一个任务(比如每周游泳3次)。我怎样才能上课#34; DAY" (比如星期一)检查同一时段内两个任务之间是否存在冲突?

 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的新手,所以语法是我熟悉的东西。

1 个答案:

答案 0 :(得分: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的更多信息。