Уведомления

Группа в Telegram: @pythonsu

#1 Май 4, 2016 13:30:20

Niccolum
Зарегистрирован: 2016-04-26
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

Всем добрый день.
Волнует меня следующий вопрос.
В книге представлен следующий код:

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 как видно из пути. Спасибо.

Прикреплённый файлы:
attachment classtools.py (1,2 KБ)

Офлайн

#2 Май 4, 2016 13:37:46

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

python3 /Users/kobzar/Develop/Python/test.py
[TopTest: attr1=0, attr2=1]
[SubTest: attr1=2, attr2=3]



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Май 4, 2016 13:38:21)

Офлайн

#3 Май 4, 2016 14:06:37

Niccolum
Зарегистрирован: 2016-04-26
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

ZerG
Не очень понял почему мой вариант не правильный и данная программа не работает (не открывает условие if __name__ == ‘__main__’
Не очень понял что сделали вы - команды python3 не открывает у меня, только через python. Также почему вы не указали диск, с которого берёте данный пример? Какая версия питона у вас?

Офлайн

#4 Май 4, 2016 14:19:00

Niccolum
Зарегистрирован: 2016-04-26
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

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 ??

Как изначально задать кодировку файла? Я так понял ругается на то, что вначале русские символы

Отредактировано Niccolum (Май 4, 2016 14:28:50)

Офлайн

#5 Май 4, 2016 15:08:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

Офлайн

#6 Май 4, 2016 15:16:49

Niccolum
Зарегистрирован: 2016-04-26
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

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

Офлайн

#7 Май 4, 2016 15:25:17

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

# -*- 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 (Май 4, 2016 15:26:55)

Офлайн

#8 Май 4, 2016 15:28:21

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

Niccolum
Вы попробуйте и так и так.

Офлайн

#9 Май 4, 2016 15:35:25

Niccolum
Зарегистрирован: 2016-04-26
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

noob_saibot
Если вставить в саму программу:
SyntaxError
Если вставить в CMD:
первой строчкой - символ # или символы -*- не являются внутренней или внешней частью программы
Второй строчкой не получается ввиду построчного выполнения cmd (как только 1 строка введена при переходе на вторую начинается выполнение)
Соответсвенно либо я жутко туплю либо данная строка только для UNIX

Офлайн

#10 Май 4, 2016 15:37:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Марк Лутц. ООП

А какое отношение питон имеет к cmd?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version