0

私は大学のタイムテーブルのウェブページをスクレイプし、次のように(リストの)リストのリストのリストを生成するコードを持っています:

[[[[start_time, end_time], [module_code, period_type, {period_number}], [room_code]], {next modules...}],{next_days...}]

この種の返されたデータをPython(および場合によってはJavaまたは他の言語)で文書化する場合、そのためのベストプラクティスはありますか?

注:PEPを確認しましたが、これに関連するものは見つかりませんでした

4

2 に答える 2

4

ネストされたリストを使用する代わりに、データを保持するための単純なクラスを作成します。

 class TimeTableEntry(object):
     def __init__(self, start, end, module, room):
         self.start = start
         self.end = end
         self.module = module
         self.room = room

次に、メソッドがそれらのリストを返すことを文書化します。追加された利点は、これらのオブジェクトにメソッドを追加できることです。__str__簡単に表示できるメソッドを追加します。等。

何よりも、プリミティブ型のネストされた構造を文書化するよりも、これらのエントリオブジェクトをはるかに明確に文書化できます。

于 2012-09-25T10:25:59.590 に答える
2

この種の構造は、辞書としてより適切にモデル化されます。キーは部屋のコードです。各ルームコードキーにはリストがあり、このリストには各コース/イベントを表すタプルがあります。

schedule = dict()
schedule['room_1'] = [(start_time,end_time,module_code,period_type,..),
                      (start_time,end_time,module_code,period.....),
                      ...
                     ]
schedule['room_2'] = [ ... ] # as above

これにより、文書化が容易になり、次のようなことができるようになります。

for i in schedule:
   print '{0} events scheduled for room {1}".format(len(schedule[i]),i)

これを文書化する方法は次のとおりです。

def foo(bar):
    '''
    Does some magic with `bar`.  Cats may be harmed and
    the space time continuum may be disturbed if you pass in
    silly things like None.

    Args:
        bar: The best name for a variable since foo.

    Returns:
        A dict mapping keys to the room and rows representing
        the room's schedule. A row is represented as a list.
        Each element of the list is a tuple of strings representing
        and event. For example:

        {'room_1': [(start_time,end_time,module_code,period_type,..)]}
    '''
于 2012-09-25T10:27:46.993 に答える