Domanda

Sto cercando di costruire una serie di attacchi Lua per una collezione di classi C ++, ma sono stato a giocare con Python per vedere se ottengo risultati migliori. In entrambe le lingue le associazioni sembrano funzionare, tuttavia, quando ho inizializzare un'istanza di una classe che contiene i membri di altre classi, tali dati membri non sembrano essere garantita essere inizializzato.

Per esempio, prendete la classe:

class MyClass : public ParentClass // (Obviously) not a real class
{
    public:
        SomeClass sc;
        OtherClass oc;
};//Note that none of my classes have a constructor or destructor; this is by design.

Quando ho generare associazioni per una classe come questa, sono in grado di eseguire istruzioni come:

var = module_name.MyClass()
print(var.sc.x, var.sc.y)

E mi vengono i valori spazzatura previsti riportati alla schermata. Tuttavia, se provo a stampare nulla circa l'istanza di OtherClass, diventa evidente che si tratta di "spense" - in Lua non ha metatabella a tutti e in Python facendo dir (var.oc) dà solo le funzioni predefinite. Tuttavia, se poi faccio:

var.oc = module_name.OtherClass()

Il / dir (oc) chiamata oc metatabella sono quello che avrei sperato e può essere trattata come previsto.

Qualcuno può offrire alcuna comprensione perché solo -some- dei dati membri vengono inizializzati?

Grazie!

È stato utile?

Soluzione

Si scopre che il problema era legato a un altro problema che stavo avendo. Vedi questa discussione per la risoluzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top