【问题标题】:How to Construct Method and Attributes using Dictionaries in Python如何在 Python 中使用字典构造方法和属性
【发布时间】:2022-11-28 02:39:34
【问题描述】:
class print_values:
    def __init__(self,username,user_email,displayname):
        self.name= username
        self.email=user_email
        self.DisplayName=displayname
    def printing_content(self):
        print(f"UserName: {self.name}\n"
              f"UserEmail: {self.email}\n"
              f"UserDisplayName:{self.DisplayName}\n")

user_one={'username':'userone',
            'useremail':'userone@gmail.com',
            'displayname':'User One'}

user_two={'username':'usertwo',
            'useremail':'usertwo@gmail.com',
            'displayname':'User Two'}

user_three={'username':'userthree',
            'useremail':'userthree@gmail.com',
            'displayname':'User Three'}

users_list=['user_one','user_two','user_three']


obj_name=print_values(user_one['username'],user_one['useremail'],user_one['displayname'])

obj_name.printing_content()

它工作正常,因为我得到如下输出

UserName: userone
UserEmail: userone@gmail.com
UserDisplayName:User One

这里只使用 user_one dict,我想对多个 dict 做同样的事情。

我尝试在列表中添加字典名称并尝试遍历它们,如下所示

for item in user_list:
    obj_name=print_values(item['username'],item['useremail'],item['displayname'])
    obj_name.printing_content()

但是低于错误

obj_name=print_values(item['username'],item['useremail'],item['displayname'])
TypeError: string indices must be integers

任何人都可以让我知道我缺少什么或完成此任务的任何其他想法。

提前致谢!

【问题讨论】:

  • 顺便说一句:在循环中打印item,我想这不是你想的那样。
  • 我的 python 版本是 3.9.7,item 是一个 str 值,我刚刚测试了它的 type

标签: python python-3.x list loops dictionary


【解决方案1】:

这是因为在 users_list=['user_one', 'user_two', 'user_three'] 中,您输入的变量名称是一个字符串。

class print_values:
    def __init__(self,username,user_email,displayname):
        self.name= username
        self.email=user_email
        self.DisplayName=displayname
    def printing_content(self):
        print(f"UserName: {self.name}
"
              f"UserEmail: {self.email}
"
              f"UserDisplayName:{self.DisplayName}
")

user_one={'username':'userone',
            'useremail':'userone@gmail.com',
            'displayname':'User One'}

user_two={'username':'usertwo',
            'useremail':'usertwo@gmail.com',
            'displayname':'User Two'}

user_three={'username':'userthree',
            'useremail':'userthree@gmail.com',
            'displayname':'User Three'}

users_list=[user_one,user_two,user_three] # edited


obj_name=print_values(user_one['username'],user_one['useremail'],user_one['displayname'])

obj_name.printing_content()


for item in users_list:
    obj_name=print_values(item['username'],item['useremail'],item['displayname'])
    obj_name.printing_content()

【讨论】:

  • 因为我想对其他字典做同样的操作,你能告诉我解决方法吗?
猜你喜欢
  • 2017-09-04
  • 2020-06-13
  • 2013-12-20
  • 2023-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多