3 / 2 / 1
Регистрация: 14.10.2012
Сообщений: 50

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

27.05.2019, 11:02. Показов 3497. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru