Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 9

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

13.04.2019, 16:05. Показов 2108. Ответов 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,307
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
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru