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