Bei dem Versuch, mit einer Hand-Klasse für ein Kartenspiel zu kommen ich ein seltsames Verhalten von einem Attribute angetroffenKlasse Attribut funktioniert nicht richtig (Python)
wenn ich versuche self.number
gesehen einstellen darunter die gewohnt zeigen korrekte Ausgabe aber wenn ich das gleiche Argument durch eine Funktion machen total()
es funktioniert
meine Frage ist: warum ist das Attribut self.number
nicht den Wert von len(self.cards)
bekommen?
class Hand (object):
def __init__(self,number=0,cards=[]):
self.cards=cards
self.number=len(self.cards)
def total(self):
return len(self.cards)
hand=Hand()
hand.cards.append(9)
print hand.cards
print len(hand.cards)
print hand.number
print hand.total()
output:
[9]
1
0 #I want this to be equal to 1
1
also für alle a: __init __ (a): self.a = a werden nur geprüft und während der Initiierung verwendet danke für die Hilfe :) –
@Jared der '@ property' Dekorateur spart nur Zeit und Mühe durch, unter anderem Dinge, die mir automatisch 'set' und' get' Befehle geben, ist das richtig? Man könnte dasselbe erreichen, indem man Aspekte der "Eigenschaft" von Hand definiert. Vielen Dank! – patrick
@patrick: Der @property-Dekorator macht die von ihm erstellte Methode zu einem Getter. Benutzer der Klasse können auf "Nummer" zugreifen, als wäre es ein Attribut. Um einen Setter zu erstellen, dekorieren Sie die Setter-Methode mit '@ attribute_name.setter' (in diesem Fall wäre es' @ number.setter'). –