如何在python中创建新实例时重置实例变量?

时间:2017-07-10 07:07:43

标签: python class inheritance instance-variables

我正在尝试编写一个名为 Box 的课程。除了我开始创建一个新实例的那一刻,它完美地工作。我使用__iadd__魔法函数为实例添加权重,因此此操作的结果是一个新实例,它继承了旧版本实例的某些特征,这就是重点。但是当我定义一个全新的对象(例如,一个新的框)时,它也会明确地继承旧对象的那些实例变量。我知道我应该编写一个重置方法但是可以在创建一个新实例时重置实例变量吗?或者我在做一些完全错误的事情需要采用不同的方法?

感谢您的帮助。

class Box(object):

masess = [] # Keeps track of masses

weight = 0 # The weight of box

over = 0 # represent the rest capacity of the box

full_boxes = 0 # Number of full boxes


def __init__(self, name, capacity):

    self.name = name

    self.capacity = capacity


def __iadd__(self, other):

    Box.over = self.capacity - other # Determines the capacity of the box after some weights are added.

    if Box.over >=0:

        Box.masess.append(other)

        Box.weight += other

        if Box.weight == self.capacity:

            Box.full_boxes += 1

    return Box(self.name, self.capacity)


def __str__(self):

    return '[%s:%s:C=%i:I=%i]' %(self.name, str(Box.masess), self.capacity,Box.weight)

@staticmethod

def get_aantal_volle_dozen():

    return Box.full_boxes

A = Box('a', 20) #A new box

A +=5 # adding something to the box

A +=8

B = Box('b', 80)

print(B) # oooops! 

0 个答案:

没有答案