洋芋坨坨 发表于 2023-9-5 18:49:23

请大神帮忙看一下我的这个问题

python课后作业第62讲:类和对象(v)的动动手,我在参考答案的时候,有一段代码如下
def confirm_passwd(self):
      cardid = int(input("请输入卡号:"))
      while not self.members.get(cardid):
            cardid = int(input("该卡号不存在,请重新输入:"))
            
      passwd = input("请输入密码:")
      passwd = self.to_md5(passwd)
      while not self.members.get(cardid).passwd == passwd:
            passwd = input("密码不正确,请重新输入:")
            passwd = self.to_md5(passwd)

self.members.get(cardid).passwd == passwd:这一句是从self.member这个字典里取值,后面这个.passwd是个什么意思呢,为啥不用加get?

完整代码已放在本贴附件里了,请大神解答一下

isdkz 发表于 2023-9-5 18:49:39

在这段代码中, self.members是一个字典,其中存储了卡号和对应的成员对象。 self.members.get(cardid)是通过卡号cardid从字典中取出对应的成员对象。

.passwd是成员对象的一个属性,表示密码。这里使用.passwd是为了获取成员对象的密码属性值。

在while not self.members.get(cardid).passwd == passwd:这一行中,首先通过self.members.get(cardid)获取到对应的成员对象,然后使用.passwd获取该成员对象的密码属性值。最后将该密码属性值与输入的密码passwd进行比较。

不需要使用.get()的原因是, self.members.get(cardid)已经返回了对应的成员对象,我们可以直接对该对象的属性进行访问。

洋芋坨坨 发表于 2023-9-5 22:28:40

isdkz 发表于 2023-9-5 18:49
在这段代码中, self.members是一个字典,其中存储了卡号和对应的成员对象。 self.members.get(cardid)   ...

首先通过self.members.get(cardid)获取到对应的成员对象,然后使用.passwd获取该成员对象的密码属性值。这句话能给我一个简化版的代码让我理解吗?(能执行的那种)大佬谢谢啦

洋芋坨坨 发表于 2023-9-5 22:50:30

isdkz 发表于 2023-9-5 18:49
在这段代码中, self.members是一个字典,其中存储了卡号和对应的成员对象。 self.members.get(cardid)   ...

主要是不理解这个.passwd到底是对应的哪一行代码,或者说访问的是哪一个具体对象的属性,想看看简化版的代码辅助理解一下。
页: [1]
查看完整版本: 请大神帮忙看一下我的这个问题