Для вашего второго вопроса: хотя я не специалист по paramiko, я вижу, что функция recv, в соответствии с doc , возвращает строку. Если вы примените цикл for к строке, вы получите символы (а не строки, как можно было бы ожидать). Новая строка вызвана использованием вами функции печати, как описано на этой странице, в пункте 6.3 .
Я не изучил, что предлагает парамико. Но почему вы не относитесь к полной строке как к единому объекту? Например, вы можете проверить наличие «вверх» как:
if "up" in output:
Или, если это лучше подходит вашим потребностям, вы можете разделить строку на строки , а затем сделать любой тест, который вы хотите сделать:
for line in output.split('\n'):
Нет атрибута list
в ZombieList
. Только после того, как вы создали ZombieList
- например, self.zombie_list = ZombieList()
Вы сможете использовать свой список через self.zombie_list.list
.
Но даже тогда, я думаю, что это, вероятно, не тот дизайн, к которому вы стремитесь: я полагаю, что вы не хотите ZombieList
для каждого человека Zombie
. Скорее, тот, кто инициализирует объекты Zombie
, вероятно, также должен отвечать за поддержание экземпляра ZombieList
.
Вы также столкнетесь с другими проблемами. Например, цикл в
self.list = []
for zombie in self.list:
ds.blit(zombie.image, (1000, random.randint(10, 790)))
никогда не будет иметь никакого эффекта, поскольку self.list
всегда пуст при выполнении этого кода (так как вы определили его как пустое в предыдущей строке). ]