Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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中的属性getter和setter未显示所有属性_Python - Fatal编程技术网

python中的属性getter和setter未显示所有属性

python中的属性getter和setter未显示所有属性,python,Python,我已经声明了以下类并声明了email作为一个属性,该属性使用属性装饰器初始化。但是\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu没有将email列为对象的属性,而是将\u。 这是怎么回事 class abc: def __init__(self,first,second): self.first=first self.second=second self.e

我已经声明了以下类并声明了
email
作为一个属性,该属性使用属性装饰器初始化。但是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
没有将
email
列为对象的属性,而是将
\u。
这是怎么回事

class abc:
    def __init__(self,first,second):
        self.first=first
        self.second=second
        self.email=first+","+second
    @property
    def email(self):
        return self._email
    @email.setter
    def email(self,e):
        self._email=e
        
a = abc("hello","world")
print(a.first)
print(a.second)
print(a.email)
print(a.__dict__)

这就是设置属性的原因,也是它显示电子邮件的原因:

写入时调用此setter函数:

self.email=first+","+second

这就像写作:

email(first+","+second)
然后结果是:

self._email=first+","+second
最后,当我们提到self.email时,我们实际上是在称getter为:

@property
def email(self):
    return self._email

然而,当我们提到self.\u email时,我们访问backing属性而不调用“getter”。这就是为什么区分_email和email是有意义的,也就是为什么它在dict中指定了_email。

属性在类中,只有backing属性在实例字典中。@jonrsharpe您能详细说明一下吗
@property
def email(self):
    return self._email