Frage

In Python gibt es eine Möglichkeit, eine Klasse zu machen, dann eine zweite Version dieser Klasse mit identischen dat machen, ein aber verändert werden kann, dann kehrte die gleichen wie die Daten in der ursprünglichen Klasse sein?

So würde ich eine Klasse mit den Zahlen macht 1 bis 5, da die Daten in ihm, dann eine zweite Klasse mit den gleichen Namen für Abschnitte (oder sehr ähnlich) machen. Mess mit den Zahlen in der zweiten Klasse der Umgebung dann mit einer Funktion sie dann zurückgesetzt, die gleichen wie in der ersten Klasse sein.

Die einzige Alternative, die ich gefunden habe, ist eine aggravatingly lange Klasse mit zu vielen getrennten Teilen der Daten zu machen, darin leicht verwendbar zu sein.

War es hilfreich?

Lösung

Eine Klasse ist eine Vorlage, es Sie einen Plan erstellen können, können Sie mehrere Instanzen einer Klasse jeweils mit verschiedenen Zahlen, wie so.

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

Andere Tipps

Hier ist eine andere Antwort Art wie pobk ist; Es nutzt die dict der Instanz die Arbeit von Speichern / Rückstellgrößen zu tun, aber Sie nicht die Namen von ihnen in Ihrem Code angeben verlangen. Sie rufen () jederzeit speichern können den Zustand der Instanz zu speichern und reset () zu diesem Zustand zurückgesetzt werden.

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

Warum wollen Sie dies tun wollen? Es ist vielleicht nicht der beste / einzige Weg sein.

Klassen haben keine Werte. Objekte tun. Ist das, was Sie im Grunde eine Klasse wollen, das eine Instanz zurücksetzen (Objekt) mit einem Satz von Standardwerten?

Wie wäre es nur ein Reset-Verfahren bereitgestellt wird, welche die Eigenschaften des Objekts setzt auf was auch immer ist der Standard?

Ich glaube, Sie Ihre Frage vereinfachen sollte, oder uns sagen, was Sie wirklich tun wollen. Es ist nicht klar.

Ich glaube, Sie sind verwirrt. Sie sollten die Bedeutung von „Klasse“ und „Instanz“.

erneut prüfen

Ich glaube, Sie versuchen, zuerst eine Instanz einer bestimmten Klasse zu deklarieren und dann eine Instanz von anderer Klasse deklariert, um die Daten aus dem ersten verwenden, und dann einen Weg finden, um die Daten in der zweiten Instanz und Verwendung zu konvertieren es auf der ersten Instanz ...

Ich empfehle Ihnen, Betreiber Überlastung verwenden, um die Daten zu übertragen.

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

Just FYI, ist hier eine alternative Implementierung ... Wahrscheinlich gegen etwa 15 Millionen pythonic Regeln, aber ich veröffentliche es pro Information / Beobachtung:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top