Я думаю, что у меня есть неправильное представление о переменных класса и экземпляра. Вот пример кода:
class Animal(object):
energy = 10
skills = []
def work(self):
print 'I do something'
self.energy -= 1
def new_skill(self, skill):
self.skills.append(skill)
if __name__ == '__main__':
a1 = Animal()
a2 = Animal()
a1.work()
print a1.energy # result:9
print a2.energy # result:10
a1.new_skill('bark')
a2.new_skill('sleep')
print a1.skills # result:['bark', 'sleep']
print a2.skills # result:['bark', 'sleep']
Я думал, что energy
и skill
являются переменными класса, потому что я объявил их из любого метода. Я изменяю его значения внутри методов таким же образом (с self
в его объявлении, может быть, неверно?). Но результаты показывают мне, что energy
принимает разные значения для каждого объекта (например, переменную экземпляра), а skills
представляется совместно (например, переменная класса). Я думаю, что я пропустил что-то важное...