[Python] super(MyClass, self).__init__(*args, **kwargs)

Giuseppe Costanzi giuseppecostanzi a gmail.com
Mer 17 Feb 2016 21:43:18 CET


2016-02-17 21:40 GMT+01:00 Christian Barra <barrachri a gmail.com>:
>
>
> Il giorno 17 febbraio 2016 21:38, Giuseppe Costanzi
> <giuseppecostanzi a gmail.com> ha scritto:
>>
>> si infatti con il tuo consiglio ho capito che va tutto in args
>> ma non riesco a capire come mandare un dizionario in kwargs
>> se faccio cosi'
>>
>>  args = ('Y','Y','Z')
>>  kwargs = {1:"A", 2:"B", 3:"C"}
>> foo = B(args, kwargs,msg="Hello")
>>
>> allora ottengo, quasi, quello che vorrei
>>
>> bc a hal9000:~/stimuli$ python super.py
>> MRO: ['B', 'A', 'object']
>> __init__ class B: ({1: 'A', 2: 'B', 3: 'C'},) {'msg': 'Hello'}
>> __init__ class A: ({1: 'A', 2: 'B', 3: 'C'},) {'msg': 'Hello'}
>> super class B: ({1: 'A', 2: 'B', 3: 'C'},) {'msg': 'Hello'}
>> class: B
>> kwargs : {'msg': 'Hello'}
>> end
>> ma mi perdo la lista
>
>
> Mi fai vedere il resto del codice ?
> --
>
> I wish you a good day,
> Christian

come no

import sys

class A(object):
     def __init__(self,*args, **kwargs):
         print "__init__ class A: %s %s"%(args,kwargs)

class B(A):
    def __init__(self,arg, *args, **kwargs):
        print "__init__ class B: %s %s" %(args, kwargs)
        super(B, self).__init__(*args, **kwargs)
        print "super class B: %s %s" %(args, kwargs)

        self.kwargs = kwargs


    def __str__(self):
        return "class: %s\nkwargs : %s" % (self.__class__.__name__,
                                          self.kwargs,)


def main():

    print "MRO:", [x.__name__ for x in B.__mro__]


    args = ('Y','Y','Z')
    kwargs = {1:"A", 2:"B", 3:"C"}

    foo = B(args, kwargs,msg="Hello")

    print foo

    raw_input('end')


if __name__ == "__main__":
    main()
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>


Maggiori informazioni sulla lista Python