AttributeError: “tupel’ objekt har ingen attribut

Jeg er en nybegynder i python. Jeg er ikke i stand til at forstå, hvad problemet er?

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()

Den fejl jeg får, er:

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'
ingen sin helt fint..det bare kalder den funktion & denne funktion gør resten
At der ikke vedrører den kode du har postet her. Noget andet må være problemet
thats hele koden…tjek linket hvis u ønsker… link
Siden du har kaldt build_sentence() funktion ved hjælp af print erklæring, og da funktionen returnerer ingenting,None.
ohhhkk…thnxxx

OriginalForfatteren Gogo | 2013-06-25

4 svar

  1. 20

    Du vender tilbage fire variable s1,s2,s3,s4 og modtage dem ved hjælp af en enkelt variabel obj. Dette er hvad der kaldes en tuple, obj er forbundet med 4 værdier, de værdier af s1,s2,s3,s4. Så, skal du bruge indekset som du bruger i en liste for at få den værdi, du ønsker, i rækkefølge.

    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!"

    OriginalForfatteren Aswin Murugesh

  2. 8

    At du returnerer en tuple. Indeks det.

    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!"

    OriginalForfatteren Ignacio Vazquez-Abrams

  3. 4

    Variabler navne er kun lokalt meningsfuld.

    Når du rammer

    return s1,s2,s3,s4

    ved udgangen af den metode, Python konstruerer en tupel med de værdier, s1, s2, s3 og s4, som de fire medlemmer på indeks 0, 1, 2 og 3 – IKKE en ordbog af variable til værdier, IKKE et objekt med variabel navne og deres værdier, osv.

    Hvis du ønsker variabel-navne til at være meningsfuldt, når du trykker return i metoden, skal du oprette et objekt eller en ordbog.

    OriginalForfatteren Patashu

  4. 3
    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()

    Jeg ved, det er sent svar, måske nogle andre folk, kan med fordel
    Hvis du stadig ønsker at kalde “attributter”, du kan bruge i klassen med default constructor, og oprette en instans af den klasse, som er nævnt i andre svar

    OriginalForfatteren Enis Bilgin

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *