Domanda

In Python c'è un modo per creare una classe, poi fare una seconda versione della classe con identico dat,ma che può essere modificato, quindi tornò a essere la stessa, come i dati della classe originale?

Quindi vorrei fare una classe con i numeri da 1 a 5, in quanto i dati in esso, quindi fare una seconda classe con gli stessi nomi per le sezioni (o molto simile).Scherza con i numeri in seconda classe, quindi con una funzione di reset loro di essere la stessa della prima classe.

L'unica alternativa che ho trovato è fare una aggravatingly lungo classe con troppi pezzi separati di dati per essere facilmente utilizzabile.

È stato utile?

Soluzione

Una classe è un modello, permette di creare un progetto, è quindi possibile avere più istanze di una classe, ognuno con numeri diversi, in questo modo.

class dog(object):
    def __init__(self, height, width, lenght):
        self.height = height
        self.width = width
        self.length = length

    def revert(self):
        self.height = 1
        self.width = 2
        self.length = 3

dog1 = dog(5, 6, 7)
dog2 = dog(2, 3, 4)

dog1.revert()

Altri suggerimenti

Ecco un'altra risposta, un po ' come pobk s;utilizza l'istanza del dict per fare il lavoro di salvataggio/ripristino delle variabili, ma non richiede di specificare i nomi di loro nel vostro codice.È possibile chiamare save() in qualsiasi momento per salvare lo stato dell'istanza e reset() per ripristinare quello stato.

class MyReset:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.save()

    def save(self):
        self.saved = self.__dict__.copy()

    def reset(self):
        self.__dict__ = self.saved.copy()

a = MyReset(20, 30)
a.x = 50
print a.x
a.reset()
print a.x

Perché vuoi fare questo?Potrebbe non essere il migliore/unico modo.

Le classi non hanno valori.Gli oggetti di fare.È ciò che si vuole fondamentalmente una classe in grado di ripristinare un'istanza (oggetto) per un insieme di valori di default?

Per quanto riguarda solo fornire un metodo di ripristino, che consente di ripristinare le proprietà di un oggetto qualunque sia l'impostazione di default?

Penso che si dovrebbe semplificare la tua domanda, o ci dicono che cosa si vuole veramente fare.Non è affatto chiaro.

Penso che tu sia confuso.Si dovrebbe ricontrollare il significato di "classe" e "istanza".

Penso che si sta tentando di dichiarare un'Istanza di una certa Classe, e quindi dichiarare un'istanza di un'altra Classe, utilizzare i dati dal primo, e poi trovare un modo per convertire i dati in seconda istanza e utilizzare in prima istanza...

Mi consiglia di utilizzare l'overload dell'operatore di assegnazione dei dati.

class ABC(self):
   numbers = [0,1,2,3]

class DEF(ABC):
   def __init__(self):
      self.new_numbers = super(ABC,self).numbers

   def setnums(self, numbers):
      self.new_numbers = numbers

   def getnums(self):
     return self.new_numbers

   def reset(self):
     __init__()

Cordiali saluti, ecco un'implementazione alternativa...Probabilmente viola circa 15 milioni di euro divinatori regole, ma ho pubblicarlo per informazioni/osservazione:

class Resettable(object):
    base_dict = {}
    def reset(self):
            self.__dict__ = self.__class__.base_dict

    def __init__(self):
            self.__dict__ = self.__class__.base_dict.copy()

class SomeClass(Resettable):
    base_dict = {
            'number_one': 1,
            'number_two': 2,
            'number_three': 3,
            'number_four': 4,
            'number_five': 5,
    }
    def __init__(self):
            Resettable.__init__(self)


p = SomeClass()
p.number_one = 100
print p.number_one
p.reset()
print p.number_one
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top