Я не уверен, является ли это фундаментальным недоразумением с моей стороны, как работает ООП в Python, но я вижу очень странное поведение.Вот фрагмент кода:
class Foo(object):
def __init__(self, l = []):
print "Foo1:", l
self.mylist = l
print "Foo2:", self.mylist
class Bar(Foo):
def __init__(self, label=None):
self.label = label
super(Bar, self).__init__()
print "Bar:", self.mylist
bar1 = Bar()
bar1.mylist.append(4)
bar2 = Bar()
print "bar2's list:", bar2.mylist
Я ожидаю, что при построении bar2
переменная экземпляра mylist
будет установлена в пустой список.Однако, когда я запускаю эту программу в Python 2.6.6, я получаю следующий вывод:
Foo1: []
Foo2: []
Bar: []
Foo1: [4]
Foo2: [4]
Bar: [4]
bar2's list: [4]
Похоже, что переменная экземпляра mylist Foo сохраняется в нескольких экземплярах класса Bar, но у меня нетИдея, почему это будет.Ребята, любая помощь, которую вы мне могли бы оказать, будет принята с благодарностью.