Ich versuche, ein CRM in Python als ein abschließendes Projekt zu einem Kurs zu erstellen.
Und ich erstelle ein Wörterbuch, um wie eine "Datenbank" Form meines CRM zu verwenden.Aktualisieren eines Wörterbuchs mit einer Klassenfunktion
Zuerst tryed ich Aktualisierung der dict außerhalb einer Klasse:
index_db = {}
index_db[len(index_db)] = {'name_first': 'Johnny', 'name_last': 'Quest', 'email': '[email protected]', 'phone': '1 365 999999999'}
index_db[len(index_db)] = {'name_first': 'Scooby', 'name_last': 'Doo', 'email': '[email protected]', 'phone': '1 365 888888888'}
index_db[len(index_db)] = {'name_first': 'Homer', 'name_last': 'Simpson', 'email': '[email protected]', 'phone': '1 365 777777777'}
Und es Rückkehr:
{
0: {
'name_first': 'Johnny',
'name_last': 'Quest',
'email': '[email protected]',
'phone': '1 365 999999999'
},
1: {
'name_first': 'Scooby',
'name_last': 'Doo',
'email': '[email protected]',
'phone': '1 365 888888888'
},
2: {
'name_first': 'Homer',
'name_last': 'Simpson',
'email': '[email protected]',
'phone': '1 365 777777777'
}
}
Es ist gut aussehen, so habe ich eine Klasse:
class Consumer(object):
index_db = {}
args = {'name_first': None, 'name_last': None, 'email': None, 'phone': None}
def __set__(self, var, val):
self.args[var] = val
def __insert__(self):
self.index_db[len(self.index_db)] = self.args
Und fügen Sie drei Verbraucher ein:
consumer = Consumer()
consumer.__set__('name_first', 'Johnny')
consumer.__set__('name_last', 'Bravo')
consumer.__set__('email', '[email protected]')
consumer.__set__('phone', '1 353 30316541')
consumer.__insert__()
consumer.__set__('name_first', 'Dexter')
consumer.__set__('name_last', 'Scientist')
consumer.__set__('email', '[email protected]')
consumer.__set__('phone', '1 353 33256001')
consumer.__insert__()
consumer.__set__('name_first', 'Barney')
consumer.__set__('name_last', 'Gumble')
consumer.__set__('email', '[email protected]')
consumer.__set__('phone', '1 353 555961533')
consumer.__insert__()
Und es ist zurück:
{
0: {
'email': '[email protected]',
'name_first': 'Barney',
'name_last': 'Gumble',
'phone': '1 353 555961533'},
1: {
'email': '[email protected]',
'name_first': 'Barney',
'name_last': 'Gumble',
'phone': '1 353 555961533'},
2: {
'email': '[email protected]',
'name_first': 'Barney',
'name_last': 'Gumble',
'phone': '1 353 555961533'
}
}
Oh Gott, warum tut das nicht?
Es ist, weil Sie Elemente innerhalb des gleichen Wörterbuchs, "args", das Sie einmal als Klassenmitglied erstellen, überschreiben. – quamrana
Alle Ihre 'Consumer'-Objekte teilen sich ein einzelnes Wörterbuch, wenn Sie eines ändern, ändern Sie alle. Definieren Sie eine Methode "__init__". Das richtet stattdessen Instanzvariablen ein. –