Ho cercato di imparare le metaclassi in Python. Ho un'idea generale, ma non riesco ad attivare il meccanismo. A quanto ho capito, puoi specificare M come metaclasse quando costruisci una classe K impostando __metaclass__
su M a livello globale o di classe. Per testare il tutto, ho scritto il seguente programma:Non dovrebbe __metaclass__ forzare l'uso di una metaclasse in Python?
p = print
class M(type):
def __init__(*args):
type.__init__(*args)
print("The rain in Spain")
p(1)
class ClassMeta:
__metaclass__ = M
p(2)
__metaclass__ = M
class GlobalMeta: pass
p(3)
M('NotMeta2',(), {})
p(4)
Tuttavia, quando l'eseguo, ottengo il seguente output:
C:\Documents and Settings\Daniel Wong\Desktop>python --version Python 3.0.1 C:\Documents and Settings\Daniel Wong\Desktop>python meta.py 1 2 3 The rain in Spain 4
non dovrei vedere "La pioggia in Spagna" dopo 1 e 2? Cosa sta succedendo qui?
Il doppio negativo "non ... non forza" è difficile da analizzare. Potrebbe risolvere la domanda, per favore? –
Grazie per il feedback. Penso che dovrebbe essere più facile da capire ora. – allyourcode