Python中的类

1 投票
6 回答
1539 浏览
提问于 2025-04-11 09:15

在Python中,有没有办法先创建一个类,然后再创建一个这个类的第二个版本,数据是一样的,但可以修改,然后再把它恢复成和原来类的数据一样呢?

比如,我会创建一个类,里面的数据是数字1到5,然后再创建一个第二个类,里面的部分名称和第一个类差不多。接着我可以在第二个类中随意修改这些数字,然后通过一个函数把它们重置为和第一个类一样的值。

我找到的唯一替代方法就是创建一个非常冗长的类,里面有太多独立的数据,使用起来非常不方便。

6 个回答

1

类本身是没有值的,值是属于对象的。你想要的其实就是一个可以把实例(对象)重置为一组默认值的类,对吧?

那不如直接提供一个重置的方法,这个方法可以把你的对象的属性重置为默认值。

我觉得你应该把问题简化一下,或者告诉我们你真正想做的是什么。现在看起来不是很清楚。

2

这里有一个和pobk的回答类似的方案;它利用实例的字典来保存和重置变量的值,但你不需要在代码中指定这些变量的名字。你可以随时调用save()来保存实例的状态,调用reset()来恢复到那个状态。

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

那你为什么想这么做呢?这可能不是最好的方法,也不是唯一的方法。

5

类就像一个模板,它让你可以创建一个蓝图。你可以根据这个蓝图制造多个实例,每个实例可以有不同的数字,像这样。

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

撰写回答