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

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

27.05.2019, 11:02. Показов 3457. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru