【问题标题】:How do I change a str() type to make my program know I am talking about an object?如何更改 str() 类型以使我的程序知道我在谈论一个对象?
【发布时间】:2018-09-29 21:03:15
【问题描述】:

我将创建一个有趣的数据库。但我在这一点上被卡住了。

我正在努力使我的搜索功能更加优化。所以我正在尝试这样做:

错误是我记得的。 attributeerror 'str' 对象没有属性 'print_info'

if password == "xxxx":
    person = input("Who are you searching for? ")
    if person == "Everyone":
        print("Searching for everyone...")
        info = input("What do you want to know about everyone? ")
        if info != "Job" and info != "Salary" and info != "Age" and info != "Email" and info != "Sex" and info != "Everything":
            print("No info was found")
        else:
            for key, value in employeeDict.items():
                print("")
                key.print_info(str(info))
    else: 
        print("Searching for", person + "...")
        info = input("What do you want to know about " + str(person) + "? ")
        if info != "Job" and info != "Salary" and info != "Age" and info != "Email" and info != "Sex" and info != "Everything":
            print("No info was found")
        else:
            person.print_info(str(info))
else:
    print("Access denied")

我的“每个人”搜索功能工作正常,但我需要找到一个明确的员工的功能给我一个属性错误,因为“人”变量被格式化为字符串。我想知道是否可以格式化 person 变量以使 python 知道它是一个对象。

我所有的代码都是这样的。

import datetime
from employeeVariables import *
from employeeClass import *

Name1 = Employee("Name1", "Lastname1", "Fullname1", "CEO", "75%", str(Name1BirthDate) + " " + "(" + str(int(Name1Age.days/365.25)) + " years and " + str(int(Name1Age.days % 365.25)) + " days)", "1_" + str(Name1BirthDate), "Male") 
Name2 = Employee("Name2", "Lastname2", "Fullname2", "Co. Founder", "25%", str(Name2BirthDate) + " " + "(" + str(int(Name2Age.days/365.25)) + " years and " + str(int(Name2Age.days % 365.25)) + " days)", "1_" + str(Name2BirthDate), "Male")


employeeDict = {Name1: Name1.ID, Name2: Name2.ID}

password = input('''Enter password to access the database
Password: ''')

if password == "xxxx":
    person = input("Who are you searching for? ")
    if person == "Everyone":
        print("Searching for everyone...")
        info = input("What do you want to know about everyone? ")
        if info != "Job" and info != "Salary" and info != "Age" and info != "Email" and info != "Sex" and info != "Everything":
            print("No info was found")
        else:
            for key, value in employeeDict.items():
                print("")
                key.print_info(info)
    else: 
        print("Searching for", person + "...")
        info = input("What do you want to know about " + str(person) + "? ")
        if info != "Job" and info != "Salary" and info != "Age" and info != "Email" and info != "Sex" and info != "Everything":
            print("No info was found")
        else:
            for key in employeeDict.items():
                if key == person: 
                    key.print_info(info)
                else:
                    print("The employee doesn't exist in the database")
else:
    print("Access denied")

提前感谢:)

【问题讨论】:

  • 请始终发布错误的完整回溯。
  • 我一回到家就会这样做。我认为这是一个属性错误。我会尽快编辑它
  • 我认为这是错误。 attributeerror 'str' 对象没有属性 'print_info'

标签: string python-3.x types format


【解决方案1】:

所以我找到了解决问题的方法。我不确定它是否是最好的,但它现在可以工作。

我发现我不需要我的 dict(employeeDict) 具有值 Employee.ID。相反,我将键更改为字符串,将值更改为 Employee。我现在可以将我的输入字符串与键匹配,并使其打印该键的值。

感谢帮助

【讨论】:

    【解决方案2】:

    您是否尝试过使用字典中的所有键创建一个 for 循环并说

    If key == person
        Key.print__info(info)
    

    我认为这会奏效。

    【讨论】:

    • 我刚刚尝试过,但它似乎无法正常工作。 person 变量的格式仍然与 key 不同,因此 key 不能等于 person
    • 哦,我明白了,那我会想一个新的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2012-02-29
    • 2018-12-16
    • 2011-04-01
    • 2015-01-08
    • 2011-07-28
    相关资源
    最近更新 更多