È possibile creare una sottoclasse del tipo di elenco incorporato e ridefinire il metodo "aggiungi". O ancora meglio, creane uno nuovo che farà ciò che vuoi che faccia. Di seguito è riportato il codice per un metodo 'append' ridefinito.
#!/usr/bin/env python
class MyList(list):
def append(self, element):
return MyList(self + [element])
def main():
l = MyList()
l1 = l.append(1)
l2 = l1.append(2)
l3 = l2.append(3)
print "Original list: %s, type %s" % (l, l.__class__.__name__)
print "List 1: %s, type %s" % (l1, l1.__class__.__name__)
print "List 2: %s, type %s" % (l2, l2.__class__.__name__)
print "List 3: %s, type %s" % (l3, l3.__class__.__name__)
if __name__ == '__main__':
main()
Spero che questo aiuti.
fonte
2012-10-15 20:04:46
quale sarebbe stata la logica alla base di 'append()' restituendo 'None' invece della stessa lista? Quale principio zen violerebbe? –
@CiprianTomoiaga: vedere https://en.wikipedia.org/wiki/Command%E2%80%93query_separation; 'list.append' è un comando, non una query. –
@CiprianTomoiaga: vedi anche [questa email dal Python BDFL] (https://mail.python.org/pipermail/python-dev/2003-October/038855.html). –