2016-07-10 5 views
0

プロパティをテストしようとしていますが、機能していません。理由がわかりません。 @propertyで包まれなぜこれらのエラーが表示されますか? AttributeError:属性を設定できません

import smtplib 

class EmailService(object): 

    def __init__(self): 
     self._sender=None 
     self._receiver=None 
     self._message=None 

    @property 
    def sender(self): 
     return self._sender 

    @sender.getter 
    def sender(self, sender): 
     self._sender = sender 

    @property 
    def receiver(self, receive): 
     return self._sender 

    @receiver.getter 
    def receiver(self, receiver): 
     self._receiver = receiver 

    @property 
    def message(self, message): 
     return self._message 

    @message.getter 
    def message(self, message): 
     self._message = message 




def main(): 
    smtp=EmailService() 

    smtp.sender="kevin" 
    smtp.receiver="alvin" 
    print(smtp.message +" "+ smtp.sender+" " + smtp.receiver) 

if __name__=="__main__": 
    main() 
+4

'@ sender.setter'の代わりに' @sender.getter'を書いています。 –

答えて

1

方法は、すでにあなたのgetter秒です。

ので対応方法を作るために@receiver.setter@receiver.getterを交換setter

1

AttributeError: can't set attribute

これは、あなたがsenderreceiver属性を設定しようとしているが、あなたは彼らのためにセッターを持っていないので、何が起こっています。

あなたは交換する必要があります:@propertyデコレータがそのメソッドゲッターになり

  • @sender.getter@sender.setter
  • @receiver.getter@receiver.setter
  • @message.getter@message.setter

で。設定者はフォーマットにする必要があります - @<property_name>.setter

@<name>.getter@<name>.setterで修正してください。

関連する問題