【问题标题】:AttributeError: 'tuple' object has no attributeAttributeError:“元组”对象没有属性
【发布时间】:2013-06-21 19:46:29
【问题描述】:

我是python的初学者。我无法理解问题所在?

def list_benefits():

        s1 = "More organized code"
        s2 = "More readable code"
        s3 = "Easier code reuse"
        s4 = "Allowing programmers to share and connect code together"
        return s1,s2,s3,s4

def build_sentence():

        obj=list_benefits()
        print obj.s1 + " is a benefit of functions!"
        print obj.s2 + " is a benefit of functions!"
        print obj.s3 + " is a benefit of functions!"

print build_sentence()

我得到的错误是:

Traceback (most recent call last):
   Line 15, in <module>
   print build_sentence()
   Line 11, in build_sentence
   print obj.s1 + " is a benefit of functions!"
AttributeError: 'tuple' object has no attribute 's1'

【问题讨论】:

  • 不,它完全没问题..它只是调用函数,其余的由该函数完成
  • 这与您在此处发布的代码无关。其他问题一定是问题
  • 这就是整个代码...如果您愿意,请检查链接...link
  • 由于您使用print 语句调用了build_sentence() 函数,并且由于该函数没有返回任何内容,所以None

标签: python python-2.7


【解决方案1】:

您返回四个变量 s1,s2,s3,s4 并使用单个变量 obj 接收它们。这就是所谓的tupleobj 关联了 4 个值,s1,s2,s3,s4 的值。因此,使用您在列表中使用的索引来按顺序获取您想要的值。

obj=list_benefits()
print obj[0] + " is a benefit of functions!"
print obj[1] + " is a benefit of functions!"
print obj[2] + " is a benefit of functions!"
print obj[3] + " is a benefit of functions!"

【讨论】:

    【解决方案2】:

    您返回的是tuple。索引它。

    obj=list_benefits()
    print obj[0] + " is a benefit of functions!"
    print obj[1] + " is a benefit of functions!"
    print obj[2] + " is a benefit of functions!"
    

    【讨论】:

      【解决方案3】:

      变量名称仅在本地有意义。

      一旦击中

      return s1,s2,s3,s4

      在方法结束时,Python 构造了一个元组,其中 s1、s2、s3 和 s4 的值作为索引 0、1、2 和 3 处的四个成员 - 不是变量名到值的字典,不是具有变量名称及其值等的对象。

      如果您希望在方法中点击return 后变量名有意义,则必须创建一个对象或字典。

      【讨论】:

        【解决方案4】:
        class list_benefits(object):
            def __init__(self):
                self.s1 = "More organized code"
                self.s2 = "More readable code"
                self.s3 = "Easier code reuse"
        
        def build_sentence():
                obj=list_benefits()
                print obj.s1 + " is a benefit of functions!"
                print obj.s2 + " is a benefit of functions!"
                print obj.s3 + " is a benefit of functions!"
        
        print build_sentence()
        

        我知道这是迟到的答案,也许其他人可以受益 如果您仍然想通过“属性”调用,您可以使用带有默认构造函数的类,并创建一个在其他答案中提到的类的实例

        【讨论】:

          【解决方案5】:

          我在 python 烧瓶中工作:我遇到了同样的问题......在我声明我的表单变量后有一个“,”;我正在使用 wtforms。这就是造成所有混乱的原因

          【讨论】:

          • 您似乎在展示不同代码的解决方案。
          猜你喜欢
          • 2021-07-30
          • 2013-07-29
          • 2020-08-29
          • 2015-04-22
          • 2019-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多