Python类属性 - 重置
在Python中,重置类属性的最佳方法是什么?
我有一个类,里面大约有20个类属性,在我的初始化方法中,我有
class MyClass:
def __init__(self)
self.time=0
self.pos=0
self.vel=0
self.acc=0
self.rot=0
self.dyn=0
这些属性需要在我程序的每次循环中重置,除了像上面那样设置为零,还有什么更好的方法呢?
谢谢!
5 个回答
2
这段代码的意思是……
首先,它定义了一些变量,这些变量就像是用来存储信息的盒子。你可以把它们想象成你在写作业时用来记笔记的地方。
接下来,代码会执行一些操作,比如计算、比较或者是改变这些变量的值。就像你在做数学题时,先把数字放进去,然后进行加减乘除。
最后,代码会输出结果,可能是显示在屏幕上,或者是保存到文件里。就像你完成作业后,把答案写在纸上一样。
总之,这段代码的作用就是通过一系列步骤来处理数据,并给出最终的结果。
class MyClass(object):
def __init__(self):
attribs = 'time', 'pos', 'vel', 'acc', 'rot', 'dyn'
vars(self).update((x, 0) for x in attribs)
4
你可以使用vars()这个函数,它会返回一个可以编辑的值的字典。
大概是这样的
class A:
def __init__(self):
self.a=1
self.b=1
def reset(self):
dic = vars(self)
for i in dic.keys():
dic[i] = 0
inst = A()
print inst.a , inst.b # will print 1 1
inst.reset()
print inst.a , inst.b # will print 0 0
如果你不想修改其他的一些属性,你可以这样做
def reset(self):
dic = vars(self)
noEdit = ['a']
for i in dic.keys():
if i not in noEdit:
dic[i] = 0
这样做不会修改变量a,虽然我觉得我们可能已经走得太远了,这可能会违反面向对象编程的一些原则呢 :)
4
我不太想在init
方法里重置它们,而是想定义一个reset
方法来处理这个问题,然后在init
里和每次后续的循环之前都调用这个reset
方法。