Область и списки классов Python
Я все еще довольно плохо знаком с 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
Ясно, что я ожидал бы, что переменные класса приведут к одинаковым точным данным и одинаковому точному выводу ... Кажется, что я нигде не могу найти, что отличает список от, скажем, строки или числа, почему список ссылаться на тот же список из первого экземпляра в последующих? Очевидно, я, вероятно, неправильно понимаю какую-то механику области действия или механику создания списка.