2016-05-10 14 views
0

Ich habe eine Message Klasse, die ich die Nutzlast von festlegen möchte. Jedoch kann ich nicht herausfinden, wie man die richtige Methode dafür benutzt. Dies ist, wie die Message Klasse in den Quellcode (entfernt irrelevante Teile) aussieht:Python: Wie man Methode mit Decorator richtig verwendet

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 

Wenn ich versuche, mit messageObject.payload("Hello World") die Nutzlast zu setzen erhalte ich die Fehlermeldung: TypeError: 'NoneType' object is not callable.

Was ist der richtige Weg, um die Nutzlast einzustellen?

Antwort

1

Wenn Sie die property decorator verwenden, payload ist nicht mehr verwendet als Methode, es wird Eigenschaft als den Dekoratornamens angibt und verwendet wie folgt:

message_object.payload = "Hello World" # set the payload property 
message_object.payload # get the payload property