Я до сих пор довольно новичок в Python, и мой опыт OO приходит из Java. Поэтому у меня есть код, который я написал на Python, что очень необычно для меня, учитывая следующий код:
class MyClass():
mylist = []
mynum = 0
def __init__(self):
# populate list with some value.
self.mylist.append("Hey!")
# increment mynum.
self.mynum += 1
a = MyClass()
print a.mylist
print a.mynum
b = MyClass()
print b.mylist
print b.mynum
Выполнение этого результата приводит к следующему выводу:
['Hey!']
1
['Hey!', 'Hey!']
1
Ясно, что я ожидал бы, что переменные класса приведут к тем же точным данным и к тому же точному результату... То, что я не могу найти нигде, - это то, что делает список отличным от строки или числа, почему это список, ссылающийся на тот же список из первого экземпляра в последующих? Ясно, что я, вероятно, неправильно понимаю какую-то сферу механики или механику создания списка.