Discussione:
Super e TypeError: super() argument 1 must be type, not classobj
(troppo vecchio per rispondere)
Andrea Crotti
2009-04-23 08:53:29 UTC
Permalink
Non capisco perché a volte usando super ottengo appunto
TypeError: super() argument 1 must be type, not classobj

mentre a volte funziona tutto

class ParamikoFilter(logging.Filter):
def __init__(self, name=None):
""" By default everything is left passing"""
super(ParamikoFilter, self).__init__(name)


Cosa c'è di sbagliato in questo? Gli passo una classe e l'oggetto
stesso, dovrebbe andare a chiamarmi l'init di logging.Filter no?

E tra l'altro non sarebbe stato più carino se di default super
provasse a trovare lo stesso metodo ma nella classe superiore?

Tipo
def __init__(self,name):
super(name)

richiamasse l'__init__ della classe superiore?
(mi pare che in java fosse così)
Marco Mariani
2009-04-23 08:58:16 UTC
Permalink
Post by Andrea Crotti
E tra l'altro non sarebbe stato più carino se di default super
provasse a trovare lo stesso metodo ma nella classe superiore?
Tipo
super(name)
richiamasse l'__init__ della classe superiore?
(mi pare che in java fosse così)
http://www.python.org/dev/peps/pep-3135/
Marco Mariani
2009-04-23 09:00:05 UTC
Permalink
dimenticavo. logging.Filter eredita da object ?
Michele Simionato
2009-04-23 09:00:56 UTC
Permalink
Post by Andrea Crotti
Non capisco perché a volte usando super ottengo appunto
TypeError: super() argument 1 must be type, not classobj
Dal messaggio di errore sembrerebbe un problema new style/old style
classes: come primo argumento stai dando a super una classe vecchio
stile?
Post by Andrea Crotti
E tra l'altro non sarebbe stato più carino se di default super
provasse a trovare lo stesso metodo ma nella classe superiore?
Tipo
    super(name)
richiamasse l'__init__ della classe superiore?
(mi pare che in java fosse così)
Explicit is better than implicit. Cio' detto, sono il primo a
riconoscere
che super non e' certamente la cosa piu' bella in Python:

http://www.artima.com/weblogs/viewpost.jsp?thread=236275
http://www.artima.com/weblogs/viewpost.jsp?thread=236278
http://www.artima.com/weblogs/viewpost.jsp?thread=237121
Andrea Crotti
2009-04-23 09:23:59 UTC
Permalink
Post by Michele Simionato
Explicit is better than implicit. Cio' detto, sono il primo a
riconoscere
http://www.artima.com/weblogs/viewpost.jsp?thread=236275http://www.artima.com/weblogs/viewpost.jsp?thread=236278http://www.artima.com/weblogs/viewpost.jsp?thread=237121
Ottimo grazie
class Filter:
Filter è old-style, questo spiega perché a volte dava errore e a volte
no, grazie mille sarò esplicito

Loading...