2016-06-11 29 views
3

私はscapyを使ってパケットを作りたいと思っています。 IP()クラスのメンバーを見たとき、私は次のコードイディオムに出くわした:Pythonの角括弧

'fieldtype': { 

    'frag': <Field (IP,IPerror).frag>, 
    'src': <Field (IP,IPerror).src>, 
    'proto': <Field (IP,IPerror).proto>, 
    'tos': <Field (IP,IPerror).tos>, 
    'dst': <Field (IP,IPerror).dst>, 
    'chksum': <Field (IP,IPerror).chksum>, 
    'len': <Field (IP,IPerror).len>, 
    'options': <Field (IP,IPerror).options>, 
    'version': <Field (IP,IPerror).version>, 
    'flags': <Field (IP,IPerror).flags>, 
    'ihl': <Field (IP,IPerror).ihl>, 
    'ttl': <Field (IP,IPerror).ttl>, 
    'id': <Field (IP,IPerror).id>}, 
    'time': 1465637588.477862, 
    'initialized': 1, 
    'overloaded_fields': {}, 

私は、Pythonの比較的新しいです。誰かがそれぞれのフィールド型定義で山括弧の目的をどのように説明することができますか?

私は以下のドキュメントを使用して自分自身を理解しようとしていますが、完全に固まってしまっています。

Scapy 2.3.1

おかげFieldインスタンスに適用

+1

これはオブジェクトの文字列表現であり、実際のP​​ython構文ではありません。 –

答えて

1

reprはないPythonの構文の源である__repr__ための次の定義を使用します。

def __repr__(self): 
    return "<Field (%s).%s>" % (",".join(x.__name__ for x in self.owners),self.name)