Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
3 / 2 / 1
Регистрация: 14.10.2012
Сообщений: 50

Как инстансу-ребенку получить доступ к переменными родителя-инстанса?

27.05.2019, 11:02. Показов 3678. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
class SiteCrawler():
    def __init__(self, url):
        self.url = url
    def start(self):
        page = PageCrawler(self.url)
        
class PageCrawler(SiteCrawler):
    def __init__(self, pageUrl):
        super().__init__(self)
        self.pageUrl = pageUrl
        print(self.url)
        
SiteCrawler("http://google.com").start()
Как сделать чтобы во 11 строке выводился вывод "http://google.com"? Важно, чтобы у ребенка был доступ к такой информации.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2019, 11:02
Ответы с готовыми решениями:

VUE.js (Как получить данные от родителя к ребенку через Props?)
Добрый вечер. Есть такой код: const SubWrapper = { template: '#sub-wrapper', data: function () { return { ...

Как получить доступ к переменным объекта класса-родителя?
Я знаю, что обычно передают указатель на объект класса в функцию чайлда, но вот как это сделать на ObjC никак не могу понять. ...

Передача функции от Родителя к Ребенку
У родителя есть функция updateText() {} нужно передать ее ребенку, чтобы там использовать - вызвать Изначально рендрю вот так ...

32
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
27.05.2019, 14:38
Студворк — интернет-сервис помощи студентам
Рольф, все же почитайте про ООП на досуге.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.05.2019, 14:39
Цитата Сообщение от Рольф Посмотреть сообщение
page = PageCrawler(pageUrl, self)
Эта строка не верна. В аргументах, при обращении к классу, self не указывается.

Добавлено через 28 секунд
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
urls = ['github.com', 'bing.com', 'microsoft.com']
 
class SiteCrawler():
    def __init__(self, url):
        self.url = url
    def start(self):
        for pageUrl in urls:
            page = PageCrawler(pageUrl)
        
class PageCrawler(SiteCrawler):
    def __init__(self, pageUrl):
        SiteCrawler.__init__(self, pageUrl)
        self.pageUrl = pageUrl
        print(self.url)
        
SiteCrawler("http://google.com").start()
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
27.05.2019, 14:46
Лучший ответ Сообщение было отмечено Рольф как решение

Решение

Viktorrus, она верна, ТС передает ссылку на объект SiteCrawler как входной параметр для класса PageCrawler. Почему бы и нет. (но, имхо, так не делается)

Добавлено через 5 минут
А может ну его... это наследование?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
urls = ['github.com', 'bing.com', 'microsoft.com']
 
 
class SiteCrawler:
    def __init__(self, url):
        self.url = url
 
    def start(self):
        for pageUrl in urls:
            page = PageCrawler(self, pageUrl)
 
 
class PageCrawler:
    def __init__(self, siteCrawler, pageUrl):
        self.pageUrl = pageUrl
        self.siteCrawler = siteCrawler
        print(self.siteCrawler.url)
 
 
SiteCrawler("http://google.com").start()
1
3 / 2 / 1
Регистрация: 14.10.2012
Сообщений: 50
27.05.2019, 14:52  [ТС]
ioprst, тоже можно. Но приходится указывать дополнительно имя объекта и точку.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
27.05.2019, 14:54
Рольф, я вам уже объяснил, что вам стоит пересмотреть свою программу. Я сам недавно работаю с python, но, имхо, у вас там бардак с наследованием, я бы переделал. Но это уже вам решать.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.05.2019, 14:58
ioprst,
Python
1
page = PageCrawler(pageUrl, self)
создает экземпляр класса PageCrawler . Посмотрите любые примеры с классами, когда создается экземпляр класса то в аргументах класса никогда не указывается self, только все другие аргументы из __init__().

Добавлено через 3 минуты
Правда питон не ругается на ненужный self, но если Вы его убираете, то все работает так же как и с self. Видимо он его просто игнорирует.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
27.05.2019, 15:02
Viktorrus, я выше уже написал, что self - ссылка на объект класса, можно передать куда угодно как входной параметр.
Он не "ненужный", я его там указал осмысленно.
В классе PageCrawler поле siteCrawler будет хранить ссылку на объект SiteCrawler.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.05.2019, 15:03
ioprst, Обратите внимание, self указывается только при определении метода или при обращении к методу через имя класса имякласса.имяметода(self, аргументы).
0
3 / 2 / 1
Регистрация: 14.10.2012
Сообщений: 50
27.05.2019, 15:03  [ТС]
А можно использовать глобальную переменную и будет ли это лучше?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
urls = ['github.com', 'bing.com', 'microsoft.com']
 
 
class SiteCrawler:
    def __init__(self, url):
        self.url = url
 
    def start(self):
        for pageUrl in urls:
            page = PageCrawler(pageUrl)
 
class PageCrawler:
    def __init__(self, pageUrl):
        self.pageUrl = pageUrl
        print(st.url)
 
 
st = SiteCrawler("http://google.com")
st.start()
Просто чтобы каждый раз не создавать новые объекты SiteCrawler, а использовать одну существующую. В целях экономии ресурсов. Да и короче.
Или разницы нет?
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
27.05.2019, 15:13
Рольф, зачем вам вообще классы? Вы не пробовали без них?
0
3 / 2 / 1
Регистрация: 14.10.2012
Сообщений: 50
27.05.2019, 15:17  [ТС]
ioprst, удобно логировать, каждый объект pageCrawler будет иметь свои поля данных, всю историю, объект SiteCrawler будет контейнером и можно будет сразу импортировать класс SiteCrawler и использовать его сразу, вместо кучи функции и переменных
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
27.05.2019, 15:17
Viktorrus, я там не метод определяю и не обращаюсь к методу, я в методе класса1 создаю объект класса2, в который в качестве входного параметра передаю ссылку на текущий объект (self) класса1.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.05.2019, 15:36
Рольф, Я считаю ioprst, прав, что здесь совершенно нет необходимости наследовать конструктор суперкласса.

Добавлено через 7 минут
ioprst, Если для парсинга используется scrapy, то там это осуществляется только с помощью классов и по другому scrapy работать не будет.

Добавлено через 2 минуты
Правда в scrapy классы для парсинга структурируются по другому, ни как у Рольф,

Добавлено через 7 минут
Рольф, Вот здесь
https://pycoder.ru/make-simple-spider-scrapy/
пример создания классов, для парсинга с помощью scrapy.
Я было начал изучать парсинг, и язык Xpath, потом забросил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2019, 15:36

Как заблокировать доступ на определённые сайты ребёнку?
Здравствуйте! Ребёнку привезли компьютер. Хочу сделать так, чтобы он не мог лазить где захочет. Хотелось бы чтобы открывались сайты...

Как получить родителя из MenuItem?
Есть главное контекстное меню, у него первый итем содержит еще 5 менюИтемов. У меня есть доступ к одному из этих 5ти менюИтемов. Как мне...

Как получить родителя у элемента ?
Как получить id у td, получаю элемент по клику .rsec_plus $(document).on('click','#rs_easycart .rsec_plus',function(){ ...

Как получить data-id родителя?
Как получить data-id родителя(news-item) при клике на #add-comment? <div class="news-item" data-id="3"> <h2>News...

Как получить родителя для элемента
привет есть класс танк со спрайтом, есть событие на кливишу, как получить сам объект класса? class Tank { public int...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru