Нет необходимости делать set1 = self.set1
, просто используйте self.set1
.
Когда вы запускаете s = ShapeSet()
, вы инициализируете класс, который во время этого запускает код под def __init__(self):
, вы устанавливаете self.set1 = []
, пустой список.
Это была бы прекрасная возможность для вас прочитать self
и __init__
в классе. Есть большой вопрос StackOverflow, охватывающий это;
__init__
и self
Python Конструкторы
Ваш код работает нормально, пока вы измените все ваши звонки на set1
на self.set1
и инициализируйте класс только один раз.
class ShapeSet:
def __init__(self):
"""
Initialize any needed variables
"""
self.set1=[]
def addShape(self, sh):
"""
Add shape sh to the set; no two shapes in the set may be
identical
sh: shape to be added
"""
a=True
for x in self.set1:
if x==sh:
a=False
if a:
self.set1.append(sh)
return self.set1
print(self.set1[:])
>>> s = ShapeSet()
>>> s.addShape('Square')
['Square']
>>> s.addShape('Circle')
['Square', 'Circle']
>>> s.addShape('Square')
['Square', 'Circle']