|
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 40
|
|||||||||||
Работа с классами12.01.2016, 12:33. Показов 1979. Ответов 11
Метки нет (Все метки)
Здравствуйте, такой вопрос, как указать в функции тип аргументов и как потом эти значения этих аргументов использовать в других функциях.
пример есть класс Аbc
теперь в другом методе calculate данного класса мне необходимо высчитать и заполнить поля self.с для экземпляров инициализированных в предыдущем методе. Как это сделать? я пробовал в методе create создать глобальную переменную(global V), в которую записал входное поле аргументов, а потом в методе calculate вызвать ее и присвоить значение атрибута self.c (что-то типа V[i].c= ), но в ответ Питон понятно дело говорит что элемент списка не имеет такого атрибута. Отсюда и вопрос, как заранее определить тип элементов входного поля как экземпляры класса Abc и как потом в других методах к ним обращаться? Спасибо.
0
|
|||||||||||
| 12.01.2016, 12:33 | |
|
Ответы с готовыми решениями:
11
Работа с классами о объектами Работа с классами Работа с классами |
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||
| 12.01.2016, 12:38 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 40
|
||
| 12.01.2016, 12:44 [ТС] | ||
|
просто не понимаю как из своей ситуации выйти, как объяснить программе что у меня на входе не поле со вложенными списками, а поле с экземплярами другого класса, чтобы я потом мог свободно с атрибутами этих экземпляров работать, а не получать в ответ ошибки типа той что я привел в описании
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||||||||
| 12.01.2016, 13:04 | ||||||||||||
В python 3 появилась конечно аннотация типов. Мы можем указать, что тут ожидаем в такой-то переменной заданный нами тип, но это сделано для улучшения читаемости кода (улучшения подсказок ide) и удобства программиста, а интерпретатор на эти указания типов вообще не смотрит. Мы можем объявить аргумент как строку и передать туда список и ни какой ошибки не будет.
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 40
|
|||||||||||||||||
| 12.01.2016, 13:07 [ТС] | |||||||||||||||||
|
вот код который у меня в программе
в методе computePath мне надо сделать вычисления и заполнить атрибут minDistance у всех вершин. для этого я определяю глобальную переменную Versh в методе creategraf
0
|
|||||||||||||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||
| 12.01.2016, 13:25 | ||
|
Добавлено через 5 минут Кстати, плохая идея сделать вершину в виде класса. Тебе нужно будет создавать множество экземпляров класса, а это затратная операция, программа будет медленно работать. Для работы с графами есть уже готовые библиотеки, где уже есть все (networkx). В этом же как раз и прелесть python, почти все уже есть готовое. Если уж прям свербит как хочется все сделать самому, то почитай вот это http://aliev.me/runestone/Graphs/Objectives.html, там есть и примеры и объяснения.
0
|
||
|
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 40
|
||
| 12.01.2016, 13:29 [ТС] | ||
|
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||
| 12.01.2016, 13:39 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 40
|
||||||||||||||||||||||||||||||
| 12.01.2016, 21:09 [ТС] | ||||||||||||||||||||||||||||||
|
вот нынешний код у меня:
0
|
||||||||||||||||||||||||||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|||
| 12.01.2016, 21:52 | |||
|
Покажи, что ты сделал по аналогии с моим примером и лучше выложи оригинальное задание.
0
|
|||
|
0 / 0 / 0
Регистрация: 13.02.2010
Сообщений: 40
|
|||||||||||||||||||||||||||||
| 12.01.2016, 22:54 [ТС] | |||||||||||||||||||||||||||||
|
Задание: Реализация алгоритма Дийкстры Требования:
сама программа имеет вид
в методе computePath я высчитываю кратчайшие расстояния до требуемой вершины и записываю их в список вида [1,2,0,4,5]. Теперь мне надо заполнить атрибут minDistance у всех вершин. По вашему совету избавился от глобальных переменных и теперь делаю так в класс Dijkstra добавляю атрибут self.allvertexes=[]. в метод createGraf добавил строчку self.allvertexes.extend(vertexes). В методе computePath пытаюсь к этому атрибуту обратиться
0
|
|||||||||||||||||||||||||||||
|
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
|
|||||||||||||||||||||
| 13.01.2016, 11:44 | |||||||||||||||||||||
Сообщение было отмечено fswl как решение
Решение
fswl,
1. Для начала, нужно проверить, что у полученного обьекта есть необх. свойство (duck typing в python приветствуется):
Вот только, делать это всё лучше по месту, где данные в класс попадают:
1
|
|||||||||||||||||||||
| 13.01.2016, 11:44 | |
|
Помогаю со студенческими работами здесь
12
Работа с классами Работа с классами Работа с кортежами и классами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|