2016-02-17 21:48 GMT+01:00 Christian Barra <barrac...@gmail.com>: > def __init__(self,arg, *args, **kwargs): > > args = ('Y','Y','Z') > kwargs = {1:"A", 2:"B", 3:"C"} > > foo = B(args, kwargs,msg="Hello") > > Cosa ti fa pensare che la lista (args immagino) si sia persa ? > > La domanda e' tu dove ti aspetti di trovarla :) > > args -> arg > kwargs -> *args > msg="Hello" -> **kwargs > > -- > > I wish you a good day, > Christian
ok quell' args mi è scappato e levandolo ottengo bc@hal9000:~/stimuli$ python super.py MRO: ['B', 'A', 'object'] __init__ class B: (('Y', 'Y', 'Z'), {1: 'A', 2: 'B', 3: 'C'}) {'msg': 'Hello'} __init__ class A: (('Y', 'Y', 'Z'), {1: 'A', 2: 'B', 3: 'C'}) {'msg': 'Hello'} super class B: (('Y', 'Y', 'Z'), {1: 'A', 2: 'B', 3: 'C'}) {'msg': 'Hello'} class: B kwargs : {'msg': 'Hello'} end quello che non riesco a capire e' perchè se la classe mi accetta valori arbitrari di una lista e di un dizionario ed io , mi sembra, li passo con args e kwargs l' *args si pappa lista e dizionario e per popolare **kwargs devo passargli un'altro parametro (msg': 'Hello') cioè non posso passare a *kwargs un dizionario e poi spacchettarmenlo da dentro la classe? per fare un esempio pratico args = ('Y','Y','Z') kwargs = {'server':"127.0.0.1", 'user':"guest",'passw':"12345",'database':"genbank"} foo = B(args, kwargs, server="127.0.0.1", user="guest",passw="12345",database="genbank") ritorna bc@hal9000:~/stimuli$ python super.py MRO: ['B', 'A', 'object'] __init__ class B: (('Y', 'Y', 'Z'), {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'}) {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'} __init__ class A: (('Y', 'Y', 'Z'), {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'}) {'passw': '12345', 'user': 'guest', 'server': '127.0.0.1', 'database': 'genbank'} super class B: (('Y', 'Y', 'Z'), {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'}) {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'} class: B kwargs : {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'} end mentre args = ('Y','Y','Z') foo = B(args, server="127.0.0.1", user="guest",passw="12345",database="genbank") bc@hal9000:~/stimuli$ python super.py MRO: ['B', 'A', 'object'] __init__ class B: (('Y', 'Y', 'Z'),) {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'} __init__ class A: (('Y', 'Y', 'Z'),) {'passw': '12345', 'user': 'guest', 'server': '127.0.0.1', 'database': 'genbank'} super class B: (('Y', 'Y', 'Z'),) {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'} class: B kwargs : {'database': 'genbank', 'passw': '12345', 'user': 'guest', 'server': '127.0.0.1'} end che e' quello che vorrei cioe' *kwargs il dizionario lo vuole spacchettato? > > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python