Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310

Класс: вложенность экземпляров в экземпляр

29.08.2020, 21:05. Показов 1544. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый день. есть такая последовательная структура
Python
1
2
3
4
5
6
7
8
class Block:
 
    def __init__(self, title, value):
        self.title = title
        self.value = value
 
    def get_block(self):
        return self.title, self.value
дальше бокс который хранит имя экземпляра и в списке экземпляры класса блок
Python
1
2
3
4
5
6
7
8
9
class Box:
    
    def __init__(self, name):
        self.name = name
        self.list_block = []
 
    def add_block(self, block):
    ''' метод добавляет экземпляр класса блок'''
        self.list_block.append(block)
и наконец пользователь который хранит в списке экземпляры класса бокс со своими списками из блок
Python
1
2
3
4
5
6
7
8
class Client:
    
    def __init__(self,name):
        self.name = name
        self.data = []
 
    def add_data(self, box):
        self.data.append(box)
получается такой список
[Client[box[block,block]], Client[box[block,block],box[block,block]], Client[box[block,block],box[block,block],box[block,block]]]
мне нужно изменить данные у клиента с именем х в блоке с именем у в блоге с заголовком ху.
пример решения.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
name = ['name', 'name_1', 'name_2']
list_client = [Client(n,p) for n,p in zip(name,passw)]
box_name = ['one', 'two', 'three']
 
 
for client in list_client:
    for name in box_name:
        box = Box(name)
        
        for block_data in (['data', 'val'],['data_1', 'val_1'],['data_2','val_2']):
            block = Block(*block_data)
            box.add_block(block)
        client.add_data(box)
 
 
print('\n#########################################\n')
 
def info(client):
    print(' ',client.name, client.passw)
    for box in client.data:
        print('   ',box.name)
        for block in box.list_block:
            print('     ',block.get_block())  
    print('\n#########################################\n')
 
for client in list_client:
    info(client)
 
# замена блока пользователя в боксе с заданным именем
for i, person in enumerate(list_client):
    if person.name == 'name_1':
        person = list_client[i] 
        for j, box in enumerate(person.data):
            if box.name == 'three':
                box = person.data[j]
                for x, block in enumerate(box.list_block):
                    if block.title == 'data_2':
                        box.list_block[x] = Block('nev_title', 'nev_val')
                        
 
for client in list_client:
    info(client)
вопрос есть ли путь короче? (словари не предлагать. требуется упорядочное расположение)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2020, 21:05
Ответы с готовыми решениями:

В головной функции требуется создать один статический экземпляр описанного типа и массив из n динамических экземпляров э
Есть программа #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stdio.h> struct Progr { double first; double...

Класс, считающий количество созданных экземпляров
Всем привет! Дали задание написать класс, считающий количество созданных объектов класса с перегрузом оператора + и деструктором... ...

Включение в класс экземпляров другого класса
Необходимо разработать программу на языке C++, в которой будет определено и реализовано два класса из варианта задания. Во первом классе...

24
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
31.08.2020, 21:15
Студворк — интернет-сервис помощи студентам
https://metanit.com/python/tutorial/4.6.php
проще и ключи сразу есть

Добавлено через 9 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> import shelve
>>> with shelve.open('st.dat') as f:
    f['Vic'] = {'url':'mail.ru','login':'noname','pass':'blabla'}
    f['Nick'] = {'url':'mail.ru','login':'noboby','pass':'blablabla'}
    
>>> f.close()
>>> f = shelve.open('st.dat')
>>> list(f.keys())
['Vic', 'Nick']
>>> f['Vic']
{'url': 'mail.ru', 'login': 'noname', 'pass': 'blabla'}
>>> f['Nick']
{'url': 'mail.ru', 'login': 'noboby', 'pass': 'blablabla'}
>>>
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.08.2020, 21:55
Semen-Semenich, Теперь понятно и с этим уже можно работать.
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
01.09.2020, 19:05
Semen-Semenich, вообще pickle/shelve описаны как небезопасные - возвращают обьекты питона.
я бы сделал чисто байтовые данные
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import shelve
import json
import base64
 
'''
формат данных - [[url,login,password],[url,login,password],...]
'''
 
def crypto(obj):
    return base64.b85encode(json.dumps(obj).encode())
 
def encrypto(value):
    return json.loads(base64.b85decode(value))
    
with shelve.open('pass.dat') as db:
    
    db['Vic'] = crypto([
                ['mail.ru','vic','blabla'],
                ['list.ru','vic1','bla bla'],
                ['ya.ru','VicT','bla'],
                ])
    db['Joe'] = crypto([
                ['mail.ru','joe','блаблабла'],
                ['list.ru','joE','парол'],
                ])
    
db.close()
 
 
with shelve.open('pass.dat') as f:
    for key,value in f.items():
        print(key,value)
        print(key,encrypto(value))
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
01.09.2020, 21:50  [ТС]
.vic5710, спасибо просмотрю. у меня задача была шифровать все данные что будут хранить экземпляры своей функцией шифрования (для себя нормально посторонний пользователь не прочитает файл без логина и пароля). попробую ваш вариант.
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
02.09.2020, 00:11
ну тут base64 для примера.
простенький шыфр
https://www.cyberforum.ru/pyth... st11639782
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.09.2020, 00:11
Помогаю со студенческими работами здесь

Добавление экземпляров одного класса в другой класс
Доброе утро! В программе создано 2 класса. 1-й предназначен для создания объекта под названием "студент". Он имеет различные...

Передать в класс список экземпляров другого класса
подскажите пожалуйста как это реализовать? есть класс: public class Timefr60 { public DateTime Time; ...

Создать класс "А," представляющий собой класс, который в виде параметра должен принимать экземпляр другого класса
Создать класс "А," представляющий собой класс, который в виде параметра должен принимать экземпляр другого класса, в соответствии с Вашей...

Реализовать класс Окружность: Как сравнить поля разных экземпляров?
Прошу прощения, если вопрос глупый, методы вычисляющие длину и площадь криво наверное, но сделал. Не могу понять, как мне обратиться к...

Описать класс с именем Culture и упорядочить вектор экземпляров по цене картины
Описать класс с именем CULTURE, содержащий следующие поля: • название картины; • фамилия и имя художника; • год написания картины;...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

Новые блоги и статьи
Благородство как наказание
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 - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru