2016-05-10 13 views
0

私はMessageクラスのペイロードを設定したいと思っています。しかし、私はこれを行うための適切な方法を使用する方法を把握することはできません。これは、Messageクラスは、ソースコード(関係ない部分を削除しました)でどのように見えるかです:Python:デコレータでメソッドを正しく使う方法

class Message(object): 
    def __init__(self): 
     self._type = None 
     self._mid = None 
     self._token = None 
     self._options = [] 
     self._payload = None 
     self._destination = None 
     self._source = None 
     self._code = None 
     self._acknowledged = None 
     self._rejected = None 
     self._timeouted = None 
     self._cancelled = None 
     self._duplicated = None 
     self._timestamp = None 
     self._version = 1 

    @property 
    def payload(self): 
     """ 
     Return the payload. 

     :return: the payload 
     """ 
     return self._payload 

    @payload.setter 
    def payload(self, value): 
     """ 
     Sets the payload of the message and eventually the Content-Type 

     :param value: the payload 
     """ 
     if isinstance(value, tuple): 
      content_type, payload = value 
      self.content_type = content_type 
      self._payload = payload 
     else: 
      self._payload = value 

私はmessageObject.payload("Hello World")とペイロードを設定しようとすると、私はエラーを取得:TypeError: 'NoneType' object is not callableを。

ペイロードを設定する適切な方法は何ですか?

答えて

1

あなたがproperty decoratorを使用し、​​は方法として、それ以上使用されていないデコレータ名を示し、次のように使用されるように、それが財産になり:

message_object.payload = "Hello World" # set the payload property 
message_object.payload # get the payload property 
関連する問題