0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 9

Наследование

13.04.2019, 16:05. Показов 2113. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я пока только учу Python и сейчас вот пишу программу с классами. Проблема заключается в том, что при наследовании атрибута класса другому классу, переменная меняет своё содержание. Я ожидаю «http://news.bbc.co.uk/2/hi/health/2284783.stm», а после того как переменная выходит за пределы первого класса (в котором она находится изначально), она меняется на «<__main__.Write object at 0x00000175F431E6D8>». Мне необходимо первоначальное её название для того, чтобы создать из него имя для файла.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import urllib.request
import bs4
from bs4 import BeautifulSoup
import os
import html2text
 
class Pars ():
    #'http://news.bbc.co.uk/2/hi/health/2284783.stm'
    def __init__(self, text = input()):
        text = str (text)
        self.s = text
        self.s = str(self.s)
        print ('//////Text///////',text)
        print ('//////self.s/////', self.s)
        self.s = urllib.request.urlopen(text).read()
        #self.t = 'http://news.bbc.co.uk/2/hi/health/2284783.stm'
#class Job ():
    def Jobing (self):
        soup = BeautifulSoup (self.s)
        for script in soup(['script', 'style']):
            script.extract()
            html_text = html2text.HTML2Text().handle(soup.text)
            #Job_Write = Write()
            #Job_Write.WriteFile()
 
 
            #print (html_text)
class Write (Pars):
    print ('text')
#    Job_Write.WriteFile()
 
    def WriteFile (text):
        print ('text_2')
        Job_obj = Pars
        Job_obj.__dict__.keys()
        dop = '.doc'
        print (text)
        text = str(text)
        name_file_1 = text.replace(':', '2')
        name_file_1 = name_file_1.replace ('/', '1')
        name_file_2 = os.path.splitext (name_file_1)[0] + '.doc'
        print ('///', name_file_2)
        #file = open (name_file_2, 'w')
        #file.write (str(html_text))
Job_Pars = Pars()
Job_Pars.Jobing()
Job_Write = Write()
Job_Write.WriteFile()
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.04.2019, 16:05
Ответы с готовыми решениями:

Наследование
Всем привет. Возник такой вопрос, может ли класс наследовать функцию, в которой есть другие классы? И будет ли доступ у этого класса...

Наследование
Как сделать так, чтобы экземпляры Qwerty добавляли себя в Qwerty.instances и не добавлялись в Myclass.instances. class Myclass(): ...

Наследование
Построить класс 1-го уровня с указанными в индивидуальном задании (таблица1) полями и методами: - конструктор, - функция, которая...

2
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
13.04.2019, 17:11
Лучший ответ Сообщение было отмечено Decya как решение

Решение

все понятно что ничего не понятно ! зачем вам эти фокусы
Python
1
2
3
        text = str (text)
        self.s = text
        self.s = str(self.s)
если изначально в класс подается строка? может не совсем прав но мне кажется должно быть так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Pars (): 
    def __init__(self, url):
        self.text = url
        print ('//////Text///////',self.text)
        self.s = urllib.request.urlopen(self.text).read()
       
    def Jobing (self):
        soup = BeautifulSoup (self.s, features='html.parser')
        for script in soup(['script', 'style']):
            script.extract()
            html_text = html2text.HTML2Text().handle(soup.text)
            print (html_text)
 
url = 'http://news.bbc.co.uk/2/hi/health/2284783.stm'
Job_Pars = Pars(url)
Job_Pars.Jobing()
а дальше объясните что вы хотите делать. какая переменная меняет свое значение?
1
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 9
13.04.2019, 21:03  [ТС]
Спасибо. Я очень сильно запутался, но ваши исправления решили проблему. Но теперь появился ещё один вопрос. Как передать данные переменной html_text, которые находятся в def Jobing в метод второго класса def WriteFile? А именно на 44 строку « file.write (str(html_text)) ». Мне это нужно для того, чтобы в файл были записаны данные из переменной html_text.

Добавлено через 6 минут
И да, простите, что скинул тогда код с лишними строками, которые ничего не делали. Перебирал варианты, и когда уже варианты кончились решил обратиться за помощью, не удалив при этом лишнее. Вот тут я вроде как всё лишнее убрал и добавил ваши правки
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import urllib.request
import bs4
from bs4 import BeautifulSoup
import os
import html2text
 
class Pars ():
    #'http://news.bbc.co.uk/2/hi/health/2284783.stm'
    def __init__(self, url):
        self.text = url
        print ('//////Text///////',self.text)
        self.s = urllib.request.urlopen(self.text).read()
#class Job ():
    def Jobing (self):
        soup = BeautifulSoup (self.s, features='html.parser')
        for script in soup(['script', 'style']):
            script.extract()
            html_text = html2text.HTML2Text().handle(soup.text)
            #print (html_text)
 
class Write (Pars):
    print ('text')
#    Job_Write.WriteFile()
 
    def WriteFile (self):
        dop = '.doc'
        self.text = str(self.text)
        print (self.text)
        name_file_1 = self.text.replace(':', '2')
        name_file_1 = name_file_1.replace ('/', '1')
        name_file_2 = os.path.splitext (name_file_1)[0] + '.doc'
        print ('///', name_file_2)
        file = open (name_file_2, 'w')
        file.write (str(html_text))
        print ('test')
url = input()
Job_Pars = Pars(url)
Job_Pars.Jobing()
Job_Write = Write(url)
Job_Write.WriteFile()
Добавлено через 37 минут
И всё же я забыл исправить
Python
1
2
3
        text = str (text)
        self.s = text
        self.s = str(self.s)
Добавлено через 58 минут
Вот тут я пытаюсь передать данные переменной « html_text » из первого класса во второй. Но когда я описываю « self.html_text » во втором классе, я получаю ошибку « 'Write' object has no attribute 'html_text' ». Я полагаю, что нужно описать новый атрибут во втором методе, что-то вроде « def Jobing (self, second): », а так же и при вызове этого метода описать этот атрибут « Job_Pars.Jobing(second) ». Но у меня ведь нет никаких данных, которые я могу передать туда. И даже если я задам в переменную « second » пустую строку, то есть « second = '' », то у меня возникает ошибка « 'str' object has no attribute 'html_text' » как раз при записи текста в переменную для файла, а именно вот на этой строке « second.html_text = str(html2text.HTML2Text().handle(soup.te xt)) »

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import urllib.request
import bs4
from bs4 import BeautifulSoup
import os
import html2text
 
class Pars ():
    #'http://news.bbc.co.uk/2/hi/health/2284783.stm'
    def __init__(self, url):
        self.text = url
        print ('//////Text///////',self.text)
        self.s = urllib.request.urlopen(self.text).read()
#class Job ():
    def Jobing (self, second):
        soup = BeautifulSoup (self.s, features='html.parser')
        for script in soup(['script', 'style']):
            script.extract()
            second.html_text = str(html2text.HTML2Text().handle(soup.text))
            #print (html_text)
            print (second.html_text)
 
class Write (Pars):
    print ('text')
#    Job_Write.WriteFile()
 
    def WriteFile (self):
        dop = '.doc'
        self.text = str(self.text)
        print ('test', self.text)
        self.html_text = str(self.html_text)
        print ('SELF.HTML_TEXT', self.html_text)
        name_file_1 = self.text.replace(':', '2')
        name_file_1 = name_file_1.replace ('/', '1')
        name_file_2 = os.path.splitext (name_file_1)[0] + '.doc'
        print ('///', name_file_2)
        file = open (name_file_2, 'w')
        file.write (str(self.html_text))
        print ('test')
url = input()
second = ''
Job_Pars = Pars(url)
Job_Pars.Jobing(second)
Job_Write = Write(url)
Job_Write.WriteFile()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2019, 21:03
Помогаю со студенческими работами здесь

Наследование классов
Можно ли узнать предка класса экземпляра? summer_house = class Garden: result = def __init__(self,...

Множественное наследование
Необходимо указать, в каком порядке перебираются классы. Будьте добры, укажите материал для прочтения, в котором можно узнать ответ...

Наследование классов
Всем добрый день! Написала решение к задаче, приведенной ниже, но оно не проходит элементарные проверки. Всю голову сломала, не могу...

Наследование в Python
from tkinter import Frame class AppFrame(Frame): def __init__(self, parent): Frame.__init__(self) self =...

Классы. Наследование
Следующая ситуация: class A: instances = def asdf(): for x in A.instances: .... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru