Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2017 21:21:33

dobriy_dada
Зарегистрирован: 2015-09-04
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

интерфейс файла

Здравствуйте, мне нужно создать класс File, который поддерживает сложение файлов

там есть такой метод

     def __add__(self, other_file):
        data = other_file.read()
        self.write(data)
        return self

Что должно быть в return и как создать новый файл, в который запишутся результаты сложения двух файлов?
Заранее спасибо :-)

Отредактировано dobriy_dada (Окт. 20, 2017 21:21:46)

Офлайн

#2 Окт. 21, 2017 10:09:36

python335
Зарегистрирован: 2016-10-19
Сообщения: 88
Репутация: +  -8  -
Профиль   Отправить e-mail  

интерфейс файла

Вырвано из контекста всего кода: Почему вы возвращаете просто self(точно не знаю, может так и можно)?

А вот помочь могу:

 def __add__(self, other_file): # Просто для справки - аттрибутам выдается память на свое выполнение как только начинает выполняться класс - если вам не нужно чтобы он сразу выполнялся - поменяйте название чтобы оно было не как у аттрибута
    data = other_file.read()
    self.write(data)
    # Думаю возвращать тут нечего.
def write(self,faylik):
    all_text = str(faylik) + "\n" + str(self.first_file.read()) # Где первый файл? Пусть будет так
    '''
    Сделал все тексты строками потому,
    что там могут быть только цифры и Питон определит их как числа.
    А нам нужно добавить перенос строки(если не нужен - убери)
    '''
    return all_text
    
На самом деле все это можно было сделать в одной функции просто чтобы сделать его более читаемым и кратким.

Отредактировано python335 (Окт. 21, 2017 10:11:55)

Офлайн

#3 Окт. 22, 2017 14:25:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

интерфейс файла

dobriy_dada
Что должно быть в return
return self

dobriy_dada
и как создать новый файл, в который запишутся результаты сложения двух файлов?
Его не надо создавать, у тебя должен быть открытый файл на чтение и запись в объекте File, ты должен перейти в его конец и дописать данные из переданного файла.

А self возвращается, чтобы можно было делать file1 + file2 + file3. Тогда результат первой операции будет сразу применён во второй операции, то есть их не нужно будет разделять на два оператора сложения файлов.



Отредактировано py.user.next (Окт. 22, 2017 14:25:45)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version