Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2012 17:07:22

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Вот модуль Notes.py:

#encoding:cp1251
import datetime
categoies={1:u'заметки', 2:u'результаты', 3:u'цели'}
list_of_notes=[]
class Note():
    def __init__(self):
        self.date=datetime.date.today()
        print categoies
        while True:
            try :
                categoryChoice=int(input('enter the category'))
                self.category=categoies[categoryChoice]
                break
            except NameError:
                print 'try again'
                continue
        text=str(input('Note: '))
        self.text=text
    def __unicode__(self):
        return self.date, self.category, self.text[:20]
def add_note():
    note=Note()
    list_of_notes.append(note)
def get_notes():
    for i,note in enumerate(list_of_notes):
        print i, note

1. При добавлении экземпляра класса Note() словарь categories выводит:
>>> import Notes
>>> Notes.add_note()
{1: u'\u0437\u0430\u043c\u0435\u0442\u043a\u0438', 2: u'\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b', 3: u'\u0446\u0435\u043b\u0438'}
enter the category>? 1
Как правильно выводить русский язык?

2. При заполнении атрибута класса Note.text:
Note: >? 'some first text'
возможно ли вводить строкое значение без кавычек?

3. При получении списка экземпляров get_notes() выводит:
>>> Notes.get_notes()
0 <Notes.Note instance at 0x0000000002B13848>
1 <Notes.Note instance at 0x0000000002B13508>
Почему функция __unicode__ не возвращает переопределенное в классе представление?

Офлайн

#2 Май 15, 2012 18:08:45

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Извращенский код какой то :)

Как правильно выводить русский язык?

Попробуй вывести не словарь а строку т.е. categoies к примеру, если так же будут проблемы с выводом то пиши че за ось у тебя.

возможно ли вводить строкое значение без кавычек?
А почему б не попробовать ). PS даже если число введешь, в text запишется строка.

Почему функция __unicode__ не возвращает переопределенное в классе представление?

Потому что ты объект выводишь, а чтоб сработал метод юникода нужно вроде unicode(note)

Офлайн

#3 Май 15, 2012 18:33:02

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Советую ознакомиться.

__unicode__(self)
Defines behavior for when unicode() is called on an instance of your class. unicode() is like str(), but it returns a unicode string. Be wary: if a client calls str() on an instance of your class and you've only defined __unicode__(), it won't work. You should always try to define __str__() as well in case someone doesn't have the luxury of using unicode.



Офлайн

#4 Май 15, 2012 18:40:26

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Piton23
1. Код просто для набивания руки. Есть советы?

2. Всяко пробовал выводить. То же самое. Вроде это актуальная тема.
os - windows 7
ide - pycharm 2.5
python 2.7.3

3. Ну так то и спросил, потому что пробовал.

4. Это с django взято. Например models.py:
class BlogPost(models.Model):
    title=models.CharField(max_length=150)
    body=models.TextField(blank=False)
    def __unicode__(self):
        return '%s %s' % (self.timestamp, self.title)
>>> from blog.models import BlogPost
>>> BlogPost.objects.all()
[<BlogPost: 2012-05-08 13:20:53 настройка отображения постов по категориям>, <BlogPost: 2012-05-06 01:01:01 Работа над подключением картинок>......

Офлайн

#5 Май 15, 2012 19:14:30

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Да нет советов не дам, программируй дальше, все придет с опытом.

# -*- coding: utf-8 -*-
в начало файла добавь, и файл смотри чтоб сам был в utf-8, тогда норм выведет в консоль поидее (с учетом того что ты строки будешь выводить а не словари и списки)

Офлайн

#6 Май 15, 2012 19:55:37

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Я, кстати, первое что подумал, увидев __unicode__, что человек первым делом изучал django, а потом питон :)

Если посмотреть исходный код models.Model, всё становится на свои места.



Офлайн

#7 Май 15, 2012 20:12:55

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

Piton23
# -*- coding: utf-8 -*-
в начало файла добавь, и файл смотри чтоб сам был в utf-8, тогда норм выведет в консоль поидее (с учетом того что ты строки будешь выводить а не словари и списки)
К сожаления не решило задачу

Офлайн

#8 Май 15, 2012 20:19:56

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

fata1ex
Если посмотреть исходный код models.Model, всё становится на свои места.
943 сроки. Куда уж яснее стало))

Заменил на
def __str__(self):
        return '%s|%s|%s' % (self.date,self.category,self.text[:10])
Вышла ошибка.

Если хотите действительно помочь, скопируйте себе код и выполните свои советы. А то ни мне ни вам ничего это общение не даст.
И на том спасибо.

Офлайн

#9 Май 15, 2012 20:30:11

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

На последнем PyCon небезызвестный Ned Batchelder сделал отличный доклад. Есть как видео, так и текст со слайдами. Изучайте, это, пожалуй, самая распространённая проблема среди начинающих заклинателей змей :)



Офлайн

#10 Май 15, 2012 20:32:00

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Вопрос по кодировке, вводу значения и __unicode__ на примере

ок , спс

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version