Pregunta

En Python hay alguna forma de hacer una clase, a continuación, hacer una segunda versión de la clase con idéntico dat,pero que puede ser cambiado, a continuación, volvió a ser el mismo que el de los datos en la clase original?

Así que me gustaría hacer una clase con los números del 1 al 5 según los datos que, a continuación, hacer una segunda clase con los mismos nombres para las secciones (o muy similar).Un lío con los números en la segunda clase, a continuación, con una función de reset a ser el mismo que en la primera clase.

La única alternativa que he encontrado es hacer una aggravatingly largo de la clase con demasiadas piezas separadas de los datos en que sea fácilmente utilizable.

¿Fue útil?

Solución

Una clase es una plantilla, que permite que usted para crear un plan, entonces, puede tener varias instancias de una clase, cada una con diferentes números, como tal.

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()

Otros consejos

He aquí otra respuesta como pobk s;se utiliza el ejemplo de la dict para hacer el trabajo de guardar/restablecer variables, pero no es necesario especificar los nombres de ellos en su código.Usted puede llamar a save() en cualquier momento para guardar el estado de la instancia y reset() para restablecer a ese estado.

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

¿Por qué quieres hacer esto?Podría no ser la mejor y única manera.

Las clases no tienen valores.Lo hacen los objetos.Lo que desea es básicamente una clase que puede reiniciar una instancia (objeto) a un conjunto de valores predeterminados?

¿Sólo proporcionar un método reset, que restablece las propiedades de su objeto a lo que es el valor predeterminado?

Creo que se debe simplificar su pregunta, o decirnos lo que realmente quieres hacer.No está del todo claro.

Creo que estás confundido.Usted debe volver a comprobar el significado de "clase" y "ejemplo".

Creo que se están tratando en primer lugar declarar una Instancia de una determinada Clase, y luego declarar una instancia de otra Clase, el uso de los datos de la primera, y luego encontrar una manera de convertir los datos en la segunda instancia y usarlo en la primera instancia...

Le recomiendo que use sobrecarga de operadores para asignar los datos.

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__()

Sólo para tu INFORMACIÓN, he aquí una implementación alternativa...Probablemente viola alrededor de 15 millones de python reglas, pero me publicarlo por la información/observación:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top