it-swarm.com.de

AttributeError: Das Tuple-Objekt hat kein Attribut

Ich bin ein Anfänger in Python. Ich kann das Problem nicht verstehen?

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

Der Fehler, den ich erhalte, ist:

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'
27
Alok

Sie geben vier Variablen s1, s2, s3, s4 zurück und empfangen sie mit einer einzigen Variablen obj. Dies wird als Tuple bezeichnet, obj ist mit 4 Werten verknüpft, den Werten von s1,s2,s3,s4. Verwenden Sie also den Index so, wie Sie ihn in einer Liste verwenden, um den gewünschten Wert in der richtigen Reihenfolge abzurufen.

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!"
24
Aswin Murugesh

Sie geben ein Tuple zurück. Indiziere es.

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

Variablennamen sind nur lokal sinnvoll.

Sobald Sie getroffen haben

return s1,s2,s3,s4

am Ende der Methode erstellt Python ein Tupel mit den Werten von s1, s2, s3 und s4 als seine vier Mitglieder bei Index 0, 1, 2 und 3 - KEIN Wörterbuch der Variablen Namen zu Werten, KEIN Objekt mit Variablennamen und ihren Werten usw.

Wenn die Variablennamen nach dem Drücken von return in der Methode eine Bedeutung haben sollen, müssen Sie ein Objekt oder ein Wörterbuch erstellen.

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

Ich weiß, dass es eine späte Antwort ist, vielleicht können andere Leute davon profitieren. Wenn Sie immer noch nach "Attributen" aufrufen möchten, könnten Sie eine Klasse mit einem Standardkonstruktor verwenden und eine Instanz der Klasse erstellen, wie in anderen Antworten erwähnt

3
Enis Bilgin