Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我会出现这些错误?属性错误:can';t集属性_Python_Python Decorators - Fatal编程技术网

Python 为什么我会出现这些错误?属性错误:can';t集属性

Python 为什么我会出现这些错误?属性错误:can';t集属性,python,python-decorators,Python,Python Decorators,我试图测试我的属性,但它不工作,我不知道为什么 import smtplib class EmailService(object): def __init__(self): self._sender=None self._receiver=None self._message=None @property def sender(self): return self._sender @sende

我试图测试我的属性,但它不工作,我不知道为什么

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()

@property
包装的方法已经是您的
getter
s了


因此,将
@receiver.getter
替换为
@receiver.setter
,以使相应的方法
setter
s

使用
@property
包装的方法已经是您的
getter

因此,将
@receiver.getter
替换为
@receiver.setter
,以生成相应的方法
setter
s

AttributeError:无法设置属性

发生这种情况是因为您试图设置
发送方
接收方
属性,但没有设置器

您需要替换:

  • @sender.getter
    @sender.setter
  • @receiver.getter
    @receiver.setter
  • @message.getter
    @message.setter
@属性
装饰器使该方法成为getter。setter的格式必须为-
@。setter

因此,用
@.setter
s修复不正确的
@.getter
s

AttributeError:无法设置属性

发生这种情况是因为您试图设置
发送方
接收方
属性,但没有设置器

您需要替换:

  • @sender.getter
    @sender.setter
  • @receiver.getter
    @receiver.setter
  • @message.getter
    @message.setter
@属性
装饰器使该方法成为getter。setter的格式必须为-
@。setter


因此,用
@.setter
s修复不正确的
@.getter
s

您编写了
@sender.getter
而不是
@sender.setter
。您编写了
@sender.getter
而不是
@sender.setter