【问题标题】:Print function attribute打印功能属性
【发布时间】:2014-08-27 20:30:57
【问题描述】:

在一个模块中,我试图收集 raw_inputs 并加入每个模块,并使用空格。 然后,我想打印出单个 raw_input 的结果:

def human_infoz():

    name = raw_input("Enter human name> ")
    address = raw_input("Human Address> ")
    phone = raw_input("Human Phone Number> ")
    email = raw_input("Human Email> ")
    listinfo = ["", name, address, phone, email, ""]
    return ' '.join(listinfo)

go = human_infoz()
print go.name

raw_inputs 工作得很好,但是当脚本到达 namez 时,它会放屁。

AttributeError: 'str' object has no attribute 'name'

有什么想法吗?

【问题讨论】:

  • 它不是一个属性,你正在运行一个函数,如果你想看到名字,在你的代码中放置一个打印语句或者让它成为一个以名字为属性的类
  • @padraicCunningham 添加了打印语句,但仍然存在问题
  • 我会补充一个答案,我不是那个意思

标签: python string function attributes concatenation


【解决方案1】:

您可以在代码中添加print name,创建class,其中nameattribute,或者只返回名称以及分配给第二个参数的名称,如下所示:

def human_infoz():

    name = raw_input("Enter human name> ")
    address = raw_input("Human Address> ")
    phone = raw_input("Human Phone Number> ")
    email = raw_input("Human Email> ")
    listinfo = ["", name, address, phone, email, ""]
    return ' '.join(listinfo),name

go = human_infoz()
namez = go[1]
print namez

如果您想要所有详细信息,只需返回列表:

def human_infoz():

    name = raw_input("Enter human name> ")
    address = raw_input("Human Address> ")
    phone = raw_input("Human Phone Number> ")
    email = raw_input("Human Email> ")
    listinfo = [name, address, phone, email]
    return listinfo

go = human_infoz()
namez,add,phone,email = go 

打印所有细节:

print namez,add,phone,email

要像您在问题中尝试的那样访问,您需要class

这是一个非常基本的例子:

class Details():
    def __init__(self):
        self.name = raw_input("Enter human name> ")
        self.address = raw_input("Human Address> ")
        self.phone = raw_input("Human Phone Number> ")
        self.email = raw_input("Human Email> ")
        self.info = [self.name, self.address, self.phone, self.email]

go = Details() # create instance
# print details by accessing the instance attributes
print go.name,go.address,go.email,go.phone,go.info

【讨论】:

    【解决方案2】:

    如果您想通过名称访问这些变量,为什么不使用字典?

    def human_infoz():
    
        name = raw_input("Enter human name> ")
        address = raw_input("Human Address> ")
        phone = raw_input("Human Phone Number> ")
        email = raw_input("Human Email> ")
        listinfo = {
            "name": name,
            "address": address,
            "phone": phone,
            "email": email
        }
        return listinfo
    
    go = human_infoz()
    print go["name"]
    

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 2014-11-29
      • 2022-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2020-01-21
      • 2019-01-18
      相关资源
      最近更新 更多