Найти - Пользователи
Полная версия: Вопрос по кодировке, вводу значения и __unicode__ на примере
Начало » Python для новичков » Вопрос по кодировке, вводу значения и __unicode__ на примере
1 2
buddha
Вот модуль 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__ не возвращает переопределенное в классе представление?
Piton23
Извращенский код какой то :)

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

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

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

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

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

__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.
buddha
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 Работа над подключением картинок>......
Piton23
Да нет советов не дам, программируй дальше, все придет с опытом.

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

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

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

Если хотите действительно помочь, скопируйте себе код и выполните свои советы. А то ни мне ни вам ничего это общение не даст.
И на том спасибо.
fata1ex
На последнем PyCon небезызвестный Ned Batchelder сделал отличный доклад. Есть как видео, так и текст со слайдами. Изучайте, это, пожалуй, самая распространённая проблема среди начинающих заклинателей змей :)
buddha
ок , спс
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