首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在属性定义中使用self而不是通过直接更改它来更新吗?

在属性定义中使用self而不是通过直接更改它来更新吗?
EN

Stack Overflow用户
提问于 2022-10-11 23:50:00
回答 1查看 22关注 0票数 -1

这是我创建两个类的代码。首先,我通过参数创建电子邮件;第二,我通过属性创建电子邮件。当我手动更改属性时,它们都显示不更新电子邮件的相同结果?我在这里错过了什么?

代码语言:javascript
复制
class Nam:
  def __init__(self, first, last):
    self.first = first
    self.last = last
    self.email = first + "." + last + "@gmail.com"

e = Nam("Ridhi","Shah")
print(e.first)
e.email

雷吉

Ridhi.Shah@gmail.com

代码语言:javascript
复制
e.first = "Neha"
print(e.first)
e.email

尼哈

Ridhi.Shah@gmail.com

代码语言:javascript
复制
Second Class
class Nam2:
  def __init__(self, first, last):
    self.first = first
    self.last = last
    # This is the line different from first class
    self.email = self.first + "." + self.last + "@gmail.com"

e2 = Nam2("Nidhi","Shah")
print(e2.first)
e2.email

尼迪

Nidhi.Shah@gmail.com

代码语言:javascript
复制
e2.first = "Sneha"
print(e2.first)
e2.email

斯尼哈

Nidhi.Shah@gmail.com

这节课还在给尼迪上课。即使在我用了赛尔夫之后。

这是密码。请检查一下!

EN

回答 1

Stack Overflow用户

发布于 2022-10-12 00:18:42

我认为您希望电子邮件是一个属性,每次使用时都要重新计算,而不是一个不变的值。

代码语言:javascript
复制
class Nam:
    def __init__(self, first, last):
        self.first = first
        self.last = last

    @property
    def email(self):
        return self.first + "." + self.last + "@gmail.com"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74035108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档