Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
kqest
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 31
Завершенные тесты: 2
#1

Инкапсуляция

23.06.2017, 14:03. Просмотров 366. Ответов 4
Метки нет (Все метки)

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import random
class Pasvagon():
 
    def __init__(self, name, capacity, procent):
 
        self.__name = name
        self.__capacity = capacity
        self.__procent = procent
 
 
    def changeProcent(self):
        return self.__capacity - (self.__procent * self.__capacity/100)
 
    def __str__(self):
 
        return "\n\nPasVagon" + "\nName: " + str(self.__name) +\
    "\nCapacity: " + str(self.__capacity)
 
class Train():
 
    def __init__(self, train=[]):
        self.__train = train
 
    def getTrain(self):
        return self.__train
 
    def setTrain(self, train):
        self.__train = train
 
    @staticmethod
    def appendTo(train, vagon):
        lst = train.getTrain()
        lst.append(vagon)
        train.setTrain(lst)
 
    @staticmethod
    def create():
        
        train = Train()
        vagon1 = Pasvagon("Пассажирский",
                          random.randint(100,150), random.randint(2,5))
 
        vagon2 = Pasvagon("Грузовой",
                          random.randint(100,150), random.randint(2,5))
        
        Train.appendTo(train,vagon1)
        Train.appendTo(train,vagon2)
 
        return train
 
 
    def __str__(self):
        string = "Train"
        for i in self.__train:
            string += i.__str__()
        return string
 
 
train=Train.create()
print(train)
При замене
train=[] на
Python
1
 train={ }
выдает ошибку,
как сделать так чтобы можно было использовать и [] и { } на том месте и программа не ломалась?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2017, 14:03
Ответы с готовыми решениями:

Инкапсуляция.
Написать программу имитирующую работу банковского счета методом инкапсуляции....

Инкапсуляция
Требуется произвести проверку данных в Edit1 Edit2 Edit3 Выбивает ошибку...

Инкапсуляция
Смотрел обучающие видео , читал книжки и не понял. Инкапсуляция позволяет...

Инкапсуляция
Прочитал что инкапсуляция в делфи осуществляется путем занесения полей и...

Инкапсуляция
Я понял, что такое инкапсуляция. Понял что такое сеттер, и для чего он...

4
alex925
2664 / 2276 / 627
Регистрация: 19.03.2012
Сообщений: 8,826
23.06.2017, 16:39 #2
Цитата Сообщение от kqest Посмотреть сообщение
как сделать так чтобы можно было использовать и [] и { } на том месте и программа не ломалась?
ЧТА!?!? Ты понимаешь, что ты говоришь о двух совершенно разных коллекциях, с разными интерфейсами?
0
Avazart
Эксперт С++
7706 / 5615 / 545
Регистрация: 10.12.2010
Сообщений: 25,215
Записей в блоге: 17
24.06.2017, 13:38 #3
Цитата Сообщение от kqest Посмотреть сообщение
как сделать так чтобы можно было использовать и [] и { } на том месте и программа не ломалась?
__eq__, __le__, __gt__ и другие операторы сравнения определить ?

А вообще ты заставляешь гадать ...
Конкретный код? Конкретное описание ошибки ?
0
Ryker
3 / 3 / 1
Регистрация: 20.05.2017
Сообщений: 27
30.06.2017, 02:40 #4
У него добавление в список при изменение на словарь пишет нетути атрибута аппенд. Работа со списком и словарям разная.
При чем тут инкапсуляция?
0
Рыжий Лис
Просто Лис
941 / 470 / 329
Регистрация: 17.05.2012
Сообщений: 1,937
Записей в блоге: 8
30.06.2017, 08:00 #5
Я понимаю, что это учебный код, но вот пример геттера/сеттера:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Train(object):
    def __init__(self, train=[]):
        self.__train = train
 
    def get_train(self):
        print('get_train')
        return self.__train
 
    def set_train(self, train):
        print('set_train')
        self.__train = train
 
    train = property(get_train, set_train)
 
 
t = Train([1, 2])
print(t.train)
 
t.train = [3]
print(t.train)
1
30.06.2017, 08:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2017, 08:00

инкапсуляция
Возможно ли определение пользовательского типа, чтобы им можно было...

Инкапсуляция
Приятелю задали задачу Реализуйте класс quantity, инкапсулирующий количество...

Необходима ли инкапсуляция
Есть переменная (флаг) типа bool. Нужно ли сделать отдельные медоты, которые...


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

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

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