Найти - Пользователи
Полная версия: Марк Лутц. ООП
Начало » Python для новичков » Марк Лутц. ООП
1 2
Niccolum
Всем добрый день.
Волнует меня следующий вопрос.
В книге представлен следующий код:

class AttrDisplay:
 """
 Реализует наследуемый метод перегрузки операции вывода, отображающий
 имена классов экземпляров и все атрибуты в виде пар имя=значение,
 имеющиеся в экземплярах (исключая атрибуты, унаследованные от классов).
 Может добавляться в любые классы и способен работать с любыми
 экземплярами.
 """
 def gatherAttrs(self):
  attrs = []
  for key in sorted(self.__dict__):
   attrs.append('%s=%s' % (key, getattr(self, key)))
  return ', '.join(attrs)
 def __str__(self):
  return '[%s: %s]' % (self.__class__.__name__, self.gatherAttrs())
if __name__ == '__main__':
 class TopTest(AttrDisplay):
  count = 0
  def __init__(self):
   self.attr1 = TopTest.count
   self.attr2 = TopTest.count+1
   TopTest.count += 2
 class SubTest(TopTest):
  pass
 X, Y = TopTest(), SubTest()
 print(X) # Выведет все атрибуты экземпляра
 print(Y) # Выведет имя класса,
		  # самого близкого в дереве наследования

По идее должен выводить содержание класса, объектов его имён как словарь ключ-значение, однако при вводе команды в cmd C:\Python34\python classtools.py не выводит ничего. Не могу разобрать где тут может быть ошибка. Питон 3.4 как видно из пути. Спасибо.
ZerG
python3 /Users/kobzar/Develop/Python/test.py
[TopTest: attr1=0, attr2=1]
[SubTest: attr1=2, attr2=3]
Niccolum
ZerG
Не очень понял почему мой вариант не правильный и данная программа не работает (не открывает условие if __name__ == ‘__main__’
Не очень понял что сделали вы - команды python3 не открывает у меня, только через python. Также почему вы не указали диск, с которого берёте данный пример? Какая версия питона у вас?
Niccolum
ZerG
python3 /Users/kobzar/Develop/Python/test.py


С вашим способом написало следующее:
File “/python34/classtools.py”, line 3
SyntaxError: Non-ASCII character ‘\xd0’ in file “/python34/classtools.py”, on line 4, but encoding declared; see ….pep-0263 for details.

Может вставить куда-нибудь строку coding=UTF-8 ??

Как изначально задать кодировку файла? Я так понял ругается на то, что вначале русские символы
FishHook
читать до просветления
Niccolum
FishHook
читать до просветления
Да, прочитал (признаюсь, мельком), оттуда эту фразу и взял.
Однако там примеры для линукса
Не очень понял
# This Python file uses the following encoding: utf-8
Не очень понял куда вставлять эту строку
Понял, что можно вроде конвертировать её в другую кодировку, однако тоже не понимаю как
noob_saibot
# -*- coding: utf-8 -*-
в самое начало.

PS. Вам скинули ссылку, стоило внимательнее читать. To define a source code encoding, a magic comment must
be placed into the source files either as first or second
line in the file, such as:
noob_saibot
Niccolum
Вы попробуйте и так и так.
Niccolum
noob_saibot
Если вставить в саму программу:
SyntaxError
Если вставить в CMD:
первой строчкой - символ # или символы -*- не являются внутренней или внешней частью программы
Второй строчкой не получается ввиду построчного выполнения cmd (как только 1 строка введена при переходе на вторую начинается выполнение)
Соответсвенно либо я жутко туплю либо данная строка только для UNIX
FishHook
А какое отношение питон имеет к cmd?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB