[Python] super(MyClass, self).__init__(*args, **kwargs)
Giuseppe Costanzi
giuseppecostanzi a gmail.com
Mer 17 Feb 2016 19:59:34 CET
salve a tutti,
non riesco a capire come usare *args, **kwargs in una classe.
mi sono fatto uno script che riporto sotto ma, ad esempio mi perdo
kwargs per strada mentre gli args proprio non li vedo da dentro la classe.
lo script sotto mi ritorna
bc a hal9000:~/stimuli$ python super.py
MRO: ['B', 'A', 'object']
__init__ class B: ({1: 'A', 2: 'B', 3: 'C'},) {}
__init__ class A: ({1: 'A', 2: 'B', 3: 'C'},) {}
super class B: ({1: 'A', 2: 'B', 3: 'C'},) {}
class: B
kwargs : {}
end
che non ho capito?
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)
print foo
raw_input('end')
if __name__ == "__main__":
main()
Maggiori informazioni sulla lista
Python