@python_beginnersЭта группа больше не существует

Страница 13 из 1885
Set
28.05.2016
09:10:31
Вот что делать

Andrey
28.05.2016
09:28:22
Вот что делать
Я тебе написал то делать. Чем тебя это не устраивает?

Set
28.05.2016
09:29:56
а что написать для код заполнение данной

Andrey
28.05.2016
09:32:26
а что написать для код заполнение данной
Создаешь страницу, где заполняется форма. После обрабатываешь данные, отправленные этой формой.

Google
Pavel
28.05.2016
09:33:08
django.views.generic.CreateView.

Тебе нужны куски готового кода?

Set
28.05.2016
10:59:15
да

?

Pavel
28.05.2016
11:01:21
Филиал фриланс.ру на канале. Ну тогда проходи в лс, обсудим.

Evgeniy Belyaev
28.05.2016
11:46:06
всем привет пытаюсь разобратся с внутренностями for-in, вроде всё понятно про __iter__ и next() но тогда не могу понять почему ничего не возвращается если передать в итератор такой класс: class MyFileIterator(object): def __init__(self, filename): self.filename = filename try: file = open(filename, 'r') except Exception as e: print(e) def __iter__(self): return self def next(self): try: text = file.readline() return text except Exception as e: raise StopIteration() попытка итерировать не возвращает ничего: for line in MyFileIterator('C:\\file.txt'): print(line)

Pavel
28.05.2016
11:48:12
Имя метода next или __next__?

Evgeniy Belyaev
28.05.2016
11:48:40
насколько я понял должно быть именно next()

Zart
28.05.2016
11:49:25
неправильно

Evgeniy Belyaev
28.05.2016
11:49:35
index = ['a', 'b'] iter = index.__iter__() item = iter.next() print(item) вернёт 'a' без проблем

Zart
28.05.2016
11:50:44
в тройке поменяли на __некст__

допиши просто __next__ = next

Evgeniy Belyaev
28.05.2016
11:52:28
def next(self): __next__ = next в этом месте?

Google
Zart
28.05.2016
11:52:43
нет

Gleb
28.05.2016
11:53:02
А как вы так пишете?

Zart
28.05.2016
11:53:08
после всего деф

Gleb
28.05.2016
11:53:11
Код в сообщении

Evgeniy Belyaev
28.05.2016
11:53:37
три знака обратные кавычки потом код и тремя закрываем

`

Gleb
28.05.2016
11:53:58
code like this

Прикольно

Спасибо

Zart
28.05.2016
11:54:12
тройные обратные апострофы

а еще питон умеет итерацию по классам без итер/некст

Evgeniy Belyaev
28.05.2016
11:59:25
питон разве при любой for-in не выполняет эти самые __iter__, next() до тех пор пока ни получит StopIteration?

Zart
28.05.2016
12:00:02
есть исключение

для классов без итер, но с __гетитем__ создается специальный итератор

Evgeniy Belyaev
28.05.2016
12:03:12
где-то читал, что __iter__ пришёл на смену этому самому __getitem__ в середине второй версии питона

Zart
28.05.2016
12:04:50
угу, как явный протокол итерации. но оригинальный протокол тоже поддерживается

index = ['a', 'b'] iter = index.__iter__() item = iter.next() print(item) вернёт 'a' без проблем
iter= плохой код, так как перекрывает встроенную функцию iter()

Pavel
28.05.2016
12:05:32
допиши просто __next__ = next
очень странный совет. Почему бы просто не сделать def __next__(self): ...?

Zart
28.05.2016
12:06:03
это несложно в общем случае

Google
Pavel
28.05.2016
12:09:21
я лично пишу код совместимый с 2 и 3
это требование заказчиков или зов души?

Evgeniy Belyaev
28.05.2016
12:10:42
если заменить на __next__(self) возвращает for line in MyFileIterator('C:\\file.txt'): TypeError: iter() returned non-iterator of type 'MyFileIterator'

Zart
28.05.2016
12:10:53
а вы всё в заказчиках меряете? меня двойка устраивает

Evgeniy Belyaev
28.05.2016
13:26:04
а если мы в начале класса открываем файл и храним его как member variable то правильно будет закрывать его именно в методе __del__ ?

Zart
28.05.2016
13:27:34
"начало класса" езьм что? инит?

Evgeniy Belyaev
28.05.2016
13:28:08
class TheClass: try: file = open('C:\\file.txt', 'r') lines = sum(1 for line in file) except Exception as e: print (e, e.__doc__) def __del__(self): file.close() if file.closed(): print 'closed' до методов переменные который там указываются вроде называются member variables? или я ошибаюсь?

Zart
28.05.2016
13:31:32
ох и бред

[Anonymous]
28.05.2016
13:32:13
Где почитать про ооп с нуля?

Без философии, а как на практике делается

Я так понял, класс - это объединение нескольких функций. Дальше не понял

Evgeniy Belyaev
28.05.2016
13:34:39
ох и бред
содержательно, спасибо именно этого и ждёшь на канале для начинающих

Где почитать про ооп с нуля?
очень часто рекомендуют книжку "Программирование на Python" Марк Лутц, 4ое издание имеется на русском

[Anonymous]
28.05.2016
13:35:59
А тут смогут кратко объяснить? Или там много?

Evgeniy Belyaev
28.05.2016
13:36:07
значит не member, а class var называется, ок

Zart
28.05.2016
13:37:30
несколько неудобно с мобилы, плюс я несколько занят теперь по коду - смысла выносить закрывание никакого. file ты во-первых не сохраняешь на селфе, в дел ты его из воздуха дернул во-вторых слово file уже занято типом, ты его переопределил нафиг

тот sum меня коробит

Evgeniy Belyaev
28.05.2016
13:39:14
PyCharm почему-то не ругается, что file зарезервировано каким-то built-in

если я правильно вообще понял о чём вы

Zart
28.05.2016
13:39:40
открой просто питон и напиши file

Google
Zart
28.05.2016
13:41:38
прямо там же?

Evgeniy Belyaev
28.05.2016
13:41:56
а как тогда в методах делать операции с содежимым файла если я его закрою сразу как открыл?

или открывать в каждом методе и там же закрывать?

Zart
28.05.2016
13:42:44
смотря какую семантику хосешь

Pavel
28.05.2016
13:43:21
Открыть в __init__, закрыть в __del__

Zart
28.05.2016
13:44:32
нормальные люди делают close() и добавляют его вызов в дел

чтобы можно было завершать явно

Evgeniy Belyaev
28.05.2016
13:46:15
я несколько запутался сначала закрытие в __del__ было бредом, а теперь так и делают нормальные люди

Pavel
28.05.2016
13:46:16
чтобы можно было завершать явно
Нормальные люди делают контекст менеджер, но это канал для нубов, не так ли?

Zart
28.05.2016
13:46:58
Дел приходится юзать раз у тебя внешний ресурс - файл

Pavel
28.05.2016
13:47:32
я несколько запутался сначала закрытие в __del__ было бредом, а теперь так и делают нормальные люди
Бред это то место, где ты пытался файл открыть. Для этого есть __инит__

Evgeniy Belyaev
28.05.2016
13:48:16
хотелось чтобы он был доступен как общий для всех инстансов класса, поэтому вынес из инит но я вас понял, спасибо

Zart
28.05.2016
13:48:17
контекст менеджер это очень хорошо, но он им не пользуется уже в ините

Evgeniy Belyaev
28.05.2016
13:49:32
если открывать файл в инит, то разве он не будет открывать каждый раз при создании инстанса? при создании двух интансов он разве не будет возвращать ошибку доступа, потому что файл уже открыт каким-то предыдущим инстансом?

а если его открыть и отдать как class var, то он будет держать его открытым до тех пор пока существует хоть один инстанс класса позволяя любому инстансу делать с ним нужные операции в рамках методов? если всё нет, то достаточно простого "нет" спасибо

[Anonymous]
28.05.2016
15:08:05
У кого время есть?

Andrey
28.05.2016
15:08:39
У кого время есть?
Ни у кого нет, но если есть вопрос, то задавай. Возможно, кто-то поможет.

[Anonymous]
28.05.2016
15:09:17
да я уже спросил. только не понял особо ничего

Где почитать про ооп с нуля?

Google
[Anonymous]
28.05.2016
15:09:46
Без философии, а как на практике делается

А тут смогут кратко объяснить? Или там много?

Где не начнёшь читать - "всё - объекты, бла-бла"

Andrey
28.05.2016
15:10:51
[Anonymous]
28.05.2016
15:11:16
Кратко и лаконично.

создаётся класс, затем(зачем-то) __init__

Andrey
28.05.2016
15:11:47
Кратко и лаконично.
Могу сбросить свой "студенческий" проект. Там всё используется.

[Anonymous]
28.05.2016
15:12:03
комментарии хорошие?

Andrey
28.05.2016
15:12:15
Что из 3 принципов тебе не понятно?

[Anonymous]
28.05.2016
15:13:06
мне не принципы, мне практическая часть не понятна. Тот же init

Andrey
28.05.2016
15:13:56
мне не принципы, мне практическая часть не понятна. Тот же init
Он нужен для того, чтобы задать начальное состояние.

[Anonymous]
28.05.2016
15:13:59
А так, выглядит как краткая запись функций в функциях и обращение к ним

[Anonymous]
28.05.2016
15:16:03
Ну, я ж могу так: def tools(a): if a=1: def tool1: if a=2 def tool2:

Классы ведь так работают?

Andrey
28.05.2016
15:16:47
Pavel
28.05.2016
15:17:54

Страница 13 из 1885

Эта группа больше не существует Эта группа больше не существует