|
2 / 1 / 1
Регистрация: 16.08.2019
Сообщений: 48
|
||||||
Наследование класса05.12.2019, 23:42. Показов 2902. Ответов 12
Метки нет (Все метки)
Есть код:
Мне нужно, чтобы в классе Bank в атрибуте self.balance наследовались данные атрибута self.money класса Account. Но в классе Bank нельзя взаимодействовать с классом Account, т.к. в нем инициализируется экземпляр класса Bank. И если так сделать, то он уходит в рекурсию. Уже голову всю сломал не знаю как сделать...
0
|
||||||
| 05.12.2019, 23:42 | |
|
Ответы с готовыми решениями:
12
Наследование класса python
|
| 06.12.2019, 07:30 | ||
|
FroDK, Как я понимаю Account это счет в банке. Но класс Bank, это не конкретный банк , а множество банков. Запись Bank() создает какой то экземпляр банка, мы не знаем какого.
В результате что получаем. Что экземпляр счета, а именно конкретный счет асс имеет в качестве свойства (атрибута) принадлежность к некоторому банку. Но мы не знаем к какому, так как не знаем параметров этого банка, например его название. Поэтому мы получаем безликий счет, принадлежащий не известно какому банку. self.balance это баланс некоторого банка. Не понятно, что у Вас подразумевается под Account, счет в банке или счет банка в центральном банке. Алгоритм размытый. Поэтому вообще не понятно, что Вы хотите. Опишите задачу, а так не понятно , что Вы хотите. Не возможно наследовать неизвестно что, не известно куда. Класс описывает не конкретный объект а множество объектов. Что бы разобраться, дайте всем создаваемым экземплярам Ваших классов конкретные имена, а возможно и еще другие свойства (атрибуты).
0
|
||
|
Автоматизируй это!
|
|
| 06.12.2019, 07:48 | |
|
FroDK, счет не может содержать банк, это банк содержит счета, не верно строите структуру потому и голова сломана.
У класса Банк если и может быть пункт баланс -то это сумма всех счетов, а не 1, согласен? а скорее у него должен быть метод получения аккаунта по ид или имени, а уже у аккаунта берем баланс. Проще говоря Аккаунт и Банк - не родственники, Банк содержит аккаунты.
0
|
|
| 06.12.2019, 08:46 | ||||||
|
FroDK, Если Вы пишете программу для конкретного банка, и хотите это делать используя класс Bank, то создайте экземпляр класса, который будет являться Вашим банком
bnk = Bank() и уже с ним работайте. Но для работы с банком нужно в классе описать его свойства и методы, то есть атрибуты. в качестве свойства банка можно задать множество счетов (лучше в виде словаря), как экземпляров класса Account. Определить в классе Bank методы открытия и закрытия счетов, поступления на них денег и снятие денег, и т.д. Тоесть в классах Bank и Account нужно описать реальные свойства и методы для экземпляров этих классов. Добавлено через 9 минут Кстати общие принципы построения аналогичны телефонной книге которую я написал. Но код у меня получился громоздким из-за использования графики для построения формы. Здесь можно провести аналогию банка с телефонной книгой, а счета с записями телефонов в книге. Кликните здесь для просмотра всего текста
Если не использовать графику, то код становиться достаточно простым. Пример я привел, что бы показать общий подход в использовании двух классов. Первый как контейнер, второй как содержимое этого контейнера. Добавлено через 14 минут Правильнее выразится не класс как контейнер, а экземпляр класса как контейнер. А экземпляры второго класса, как содержимое экземпляра-контейнера.
0
|
||||||
|
2 / 1 / 1
Регистрация: 16.08.2019
Сообщений: 48
|
|
| 06.12.2019, 12:01 [ТС] | |
|
Viktorrus, Просто мне нужно сделать конструкцию вида: account.bank.balance. Поэтому и создал 2 класса.
0
|
|
| 06.12.2019, 16:08 | |||
|
account не определенная переменная. Видимо Вы имели ввиду acc, что является экземпляром класса Account. acc.bank является экземпляром класса Bank, но о котором мы ничего не знаем, так как этот экземпляр не имеет никаких атрибутов, кроме атрибута balance. То есть acc.bank это некоторый банк, который имеет некоторый баланс. Как правильно заметил Welemir1 Не может балансу банка присваиваться значение являющееся свойством счета из этого банка. Такое возможно только в том случае, если в этом банке открыт всего лишь один счет. Но это бессмысленно. Такую организацию нельзя назвать банком, у которой открыт всего лишь один счет. Поэтому квалифицированная переменная account.bank.balance не может иметь в качестве значения, значение некоторого атрибута счета acc, в данном случае значения атрибута acc.money. Ваш алгоритм в принципе не верен. Как я сказал выше, попробуйте составить конкретный пример с конкретным счетом и конкретным банком и пропустить этот пример через Ваш алгоритм и вы сразу поймете что Ваш алгоритм не правильный.
0
|
|||
|
|
||||
| 06.12.2019, 16:38 | ||||
|
FroDK,
Во-вторых, непонятно, что, собственно, привело к такой задаче. В третьих, всё равно можно сделать взаимодействие между двумя классами без циклических ссылок, но это уже приёмы посложнее, поэтому для начала опишите задачу.
0
|
||||
|
5230 / 3476 / 1174
Регистрация: 21.03.2016
Сообщений: 8,304
|
|
| 06.12.2019, 17:07 | |
|
FroDK, то есть вы хотите для каждого аккаунта узнавать его сколько денег храниться в каждом банке? ну так это же должен знать аккаунт сколько и в какой банк он положил, значить это должно храниться у пользователя. каждый банк просто хранит пользователей с их балансами.
0
|
|
|
2 / 1 / 1
Регистрация: 16.08.2019
Сообщений: 48
|
||||||
| 06.12.2019, 18:14 [ТС] | ||||||
|
Имена Account и Bank я придумал для упрощения понимания. Проблему решил таким способом:
0
|
||||||
|
|
|||
| 06.12.2019, 18:26 | |||
|
FroDK, структура объектов в программе должна отражать соотношения объектов в реальном мире.
Иначе она не будет понятна никому, кроме вас, да и вам будет непонятна уже через полгода ![]() 1.
2.
0
|
|||
|
5230 / 3476 / 1174
Регистрация: 21.03.2016
Сообщений: 8,304
|
|
| 06.12.2019, 21:01 | |
|
FroDK, вкладчик должен знать в каком банке и какой у него баланс а так же выбирать в какой банк и сколько положить на счет значить он должен хранить имена банков и знать какую кнопку нажать для получения баланса,снятия и пополнения. банк должен хранить имена (счета) пользователей а так же иметь методы пополнения, снятия, и выдачи информации по имени
0
|
|
|
5230 / 3476 / 1174
Регистрация: 21.03.2016
Сообщений: 8,304
|
||||||
| 07.12.2019, 15:31 | ||||||
|
как вижу это я
0
|
||||||
| 08.12.2019, 13:27 | |
|
FroDK, Вы отказываетесь дать описание Вашей задачи. В результате люди вынуждены фантазировать, а что же Вы хотите. Если будет четко описано задание, тогда и будет четкий совет, как его решить. Вы же шифруетесь и при этом просите помощи.
Возможно Semen-Semenich, догадался, что Вы хотите. Но это остается предположением.
0
|
|
| 08.12.2019, 13:27 | |
|
Помогаю со студенческими работами здесь
13
Наследование от класса, написанного на C++ Наследование от protected класса: будут ли public члены класса Б доступны классу А
Объявление класса, создание экземпляров класса. Наследование классов Наследование в класса от другого класса и интерфейса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|