Ich schreibe eine einfache Python-Klasse namens "Tasche":Wie erstelle ich ein "optionales" Argument in Python?
class Bag:
def __init__(self, items=None):
if self.items == None:
self.items = defaultdict()
else:
temp_dict = defaultdict()
for key in self.items:
temp_dict[key] += 1
self.items = temp_dict
Die variablen Artikel in einer Liste von Objekten nimmt, wie zum Beispiel:
['d','a','b','d','c','b','d']
Von dort „def __init __ (selbst, item = None „) wird entweder:
- initialisieren Artikel als leere defaultdict, wenn nichts übergeben wurde in Artikel oder
- Initialisieren der in Argument übergeben, wenn eine Liste von Objekten in Artikel geben wurden.
Zum Beispiel sollte diese Arbeit:
b = Bag()
Das Fehlen eines Argument sollte in Ordnung sein, wie Artikel gesetzt ist, standardmäßig auf _None.
Allerdings wirft dies immer eine Ausnahme (von einem Skript, das auf Fehler überprüft):
*Error: b = Bag() raised exception AttributeError: 'Bag' object has no attribute 'items'
Ich will Bag() ohne ein vorübergehendes ein Argument in Elemente zu setzen initialisieren.
Hoffe alles ist klar, sag mir, wenn es nicht ist.
Irgendwelche Ideen oder irgendetwas falsch mit dem Code?
Ich denke, du kannst 'def __init __ (self, items = None) : 'das erlaubt immer noch' Items', die optional gesetzt werden können, wenn Sie es setzen möchten – davedwards
@downshift Ich habe die von Ihnen vorgeschlagenen Änderungen vorgenommen, aber es gibt mir immer noch die selbe Ausnahme. –
meine Entschuldigung, legte "self.items = items" als die erste Zeile nach 'def __init __ (..' – davedwards