Immaginate questo:Usando super() in classi nidificate
class A(object):
class B(object):
def __init__(self):
super(B, self).__init__()
Questo crea un errore:
NameError: global name B is not defined.
Ho provato A.B
, ma poi si dice che A
non è definito.
Aggiornamento:
ho trovato il problema.
Ho avuto una classe come questa:
class A(object):
class B(object):
def __init__(self):
super(B, self).__init__()
someattribute = B()
In tale ambito, A non è ancora definita.
Usare Python 2.6 sia AB', così come '' self .__ class__', sembrano lavorare. –
'A.B' funziona bene per me. Ma sei sicuro di aver bisogno dell'eredità multipla e di 'super' qui? Non saltare nel mondo MI a meno che non ne abbia davvero bisogno (di solito non lo fai). Se si va in questo modo è necessario consentire e passare '* args' e' ** kwargs' nel proprio '__init__'. – bobince
A non è definito nel proprio blocco di classe, quindi una variabile di classe A '_inner = B()' non funzionerà. – u0b34a0f6ae