2016-03-27 10 views
1

"Task"と "Day"の2つのクラスがあるとしましょう。タスクにはタスクの名前が付けられ、次に "add_task"によって同じタスクが複数回発生する(週に3回水泳するなど)。同じ時間帯に2つのタスクが競合しているかどうかを確認するには、クラス「DAY」(月曜日)をどのようにして作成しますか?異なるクラスの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'に置き換えます。 –

関連する問題