Python中的类
在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()