Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 2
1

Как создать копию класса

30.06.2020, 23:29. Просмотров 996. Ответов 8
Метки нет (Все метки)

Как сделать так что бы передать параметры a к b, но a не изменялась при изменении b
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
class A(object):
    def __init__(self, name):
        self.name = name
 
 
a = A("Это класс А, переменная а")
b = a
b.name = "Это класс А переменная b"
 
print(a.name)
print(b.name)
# Это класс А переменная b
# Это класс А переменная b
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2020, 23:29
Ответы с готовыми решениями:

Как проще всего создать копию многомерного списка в Python 3?
Пусть мы имеем список А и нам надо создать список В, все элементы которого такие же как у списка А....

Как создать копию объекта
Не могу найти ни в документации ни в других местах как можно создать копию (независимую) объекта,...

Python - не могу создать резервную копию
Вводится такой код (по задаче из книги Swaroop`a.) Cама задача: Составить программу, которая...

Как создать копию объекта любого класса?
Set MyObj = AnyObj присваивает MyObj ссылку на объект AnyObj. Как скопировать объект целиком ?...

8
128 / 61 / 19
Регистрация: 03.05.2019
Сообщений: 100
01.07.2020, 00:48 2
Лучший ответ Сообщение было отмечено 01zhas как решение

Решение

Можно сделать метод копирования объекта.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
class Data:
    def __init__(self, value):
        self.value = value
    
    def copy(self):
        '''Копия объекта'''
        return Data(self.value)
 
a = Data(5)
b = a.copy()
print(a.value, b.value)
b.value = 3
print(a.value, b.value)
Вроде как есть ещё встроеное копирование, почитайте про модуль copy, к примеру.
1
Заклинатель змей
551 / 459 / 200
Регистрация: 30.04.2016
Сообщений: 2,242
01.07.2020, 09:26 3
copy.deepcopy()
1
1647 / 1170 / 593
Регистрация: 21.03.2016
Сообщений: 3,319
01.07.2020, 13:29 4
Цитата Сообщение от 01zhas Посмотреть сообщение
Как создать копию класса
зачем??? каждый экземпляр это и есть копия класса

Python
1
2
3
4
5
6
7
8
9
10
class A(object):
    def __init__(self, name):
        self.name = name
 
 
a = A("Это класс А, переменная а")
b = A("Это класс А переменная b")
 
print(a.name)
print(b.name)
=====
Это класс А, переменная а
Это класс А переменная b
>>>
0
128 / 61 / 19
Регистрация: 03.05.2019
Сообщений: 100
02.07.2020, 19:03 5
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
зачем??? каждый экземпляр это и есть копия класса
Скорее, имелось ввиду новый объект со значениями атрибутов другого.
0
725 / 503 / 131
Регистрация: 22.02.2018
Сообщений: 1,563
02.07.2020, 20:41 6
Цитата Сообщение от amator_C Посмотреть сообщение
Скорее, имелось ввиду новый объект со значениями атрибутов другого.
Если мы при создании нового экземпляра класса хотим использовать атрибуты уже созданного экземпляра класса, то это можно сделать так.
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
class A(object):
    def __init__(self, name):
        self.name = name
 
 
a = A("Это класс А, переменная а")
b = A(a.name)
print(b.name)
b.name = "Это класс А переменная b"
 
print(a.name)
print(b.name)
 
# Или так, если изменить код у amator_C
class Data:
    def __init__(self, value):
        self.value = value
    
 
a = Data(5)
b = Data(a.value)
print(a.value, b.value)
b.value = 3
print(a.value, b.value)
Вывод:
Python
1
2
3
4
5
Это класс А, переменная а
Это класс А, переменная а
Это класс А переменная b
5 5
5 3
Добавлено через 8 минут
То есть добавлять метод копирования в класс не обязательно. Но кому как больше нравиться.
0
128 / 61 / 19
Регистрация: 03.05.2019
Сообщений: 100
02.07.2020, 22:51 7
Можно так, но когда атрибутов будет много и копий тоже рентабельнее сделать метод или пользоваться модулем copy.
0
3274 / 2502 / 877
Регистрация: 28.10.2013
Сообщений: 6,584
02.07.2020, 23:06 8
Цитата Сообщение от amator_C Посмотреть сообщение
Скорее, имелось ввиду новый объект со значениями атрибутов другого.
Скорей всего ТС нужно вообще что-то иное.
Это типичная XYZ problem c последующим расширением до "Мне нужен X! Как мне сделать Y? Использовать Z не предлагать!!!!!!"
0
725 / 503 / 131
Регистрация: 22.02.2018
Сообщений: 1,563
03.07.2020, 01:51 9
Цитата Сообщение от amator_C Посмотреть сообщение
когда атрибутов будет много и копий тоже рентабельнее сделать метод
В этом случае может возникнуть необходимость создавать новый экземпляр копируя не все атрибуты от экземпляра "а". Поэтому способ, который предлагаю я по моему более универсальный. Но как я сказал, кому как больше нравится.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2020, 01:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать копию объекта производного класса зная указатель на базовый
Добрый день! Вопрос в следующем... Возможно ли создать копию объекта производного класса зная...

Как делать копию экземпляра класса Queue
есть тип данных "ДАННЫЕочередь" создаю очередь забитую этим типом данных. очередь работает...

Как создать копию <tr>
Как создать копию &lt;tr&gt; с помощью jQuery при нажатия на + &lt;tr&gt; &lt;td&gt;Выберайте файл:&lt;/td&gt; ...

Как создать копию объекта?
Как создать копию объекта а не еще одну ссылку на объект........?

Как создать копию проекта?
Понимаю, что вопрос странный, но не могу понять куда делась кнопка меню &quot;Сохранить проект как...&quot;...

Как создать копию кнопки?
Здравствуйте, подскажите пожалуйста как создать копию кнопки в WindowsForm (C#) ? Если кратко...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.