Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2015 20:02:03

kpotko
Зарегистрирован: 2015-01-07
Сообщения: 21
Репутация: +  1  -
Профиль   Отправить e-mail  

Ассоциация классов

Подскажите , пожалуйста, как сделать связь между классами?
т.е. есть 2 класса (человек, и карта), и необходимо сделать связь классов таким образом, чтобы при вызове на вывод объекта человек, автоматически выводилась и карта , которая привязана к нему.

class Person:
def __init__(self,name,position):
self.name = name
self.position = position
def print_info (self):
print self.name,self.position

class IdCard:
def __init__(self,number):
self.number = number
self.date = date
def print_card (self):
print self.number,self.date

Отредактировано kpotko (Янв. 7, 2015 20:22:33)

Офлайн

#2 Янв. 7, 2015 20:16:43

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Ассоциация классов

Такие вещи реализуются на уровне БД. Если брать ОРМ, то это relationship. Сам ОРМ соберет Вам объекты нужным образом. Если же мы все же пытаемся сделать так, как Вы хотите, то Вам необходимо сделать атрибут, в котором бы Вы хранили необходимы экземпляры класса IdCard.

P.S. Оборачивайте код в теги. Читать сложно.

Отредактировано 4kpt_III (Янв. 7, 2015 20:17:48)

Офлайн

#3 Янв. 7, 2015 20:25:59

kpotko
Зарегистрирован: 2015-01-07
Сообщения: 21
Репутация: +  1  -
Профиль   Отправить e-mail  

Ассоциация классов

4kpt_III
Такие вещи реализуются на уровне БД. Если брать ОРМ, то это relationship. Сам ОРМ соберет Вам объекты нужным образом. Если же мы все же пытаемся сделать так, как Вы хотите, то Вам необходимо сделать атрибут, в котором бы Вы хранили необходимы экземпляры класса IdCard.P.S. Оборачивайте код в теги. Читать сложно.

можете подсказать, как будет выглядеть этот атрибут для хранения экземпляра?
P.s. за код извиняюсь, первый раз на сайте, писал с пробелами, при отправке пробелы слетели

Офлайн

#4 Янв. 7, 2015 20:26:26

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Ассоциация классов

kpotko
которая привязана к нему.
а где она привязана? где это указывается?



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Янв. 7, 2015 20:28:08

kpotko
Зарегистрирован: 2015-01-07
Сообщения: 21
Репутация: +  1  -
Профиль   Отправить e-mail  

Ассоциация классов

terabayt
ну вот собственно это я и хотел бы узнать, как это указать.
Выше подсказали, что нужно как-то создать атрибут для хранения экземпляра объекта карты

Офлайн

#6 Янв. 7, 2015 21:06:53

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Ассоциация классов

Вам предварительно необходимо написать механизм связывания двух отдельных классов. Я рекомендую просто сделать атрибут по типу списка. Потом добавлять в него и убирать из него экземпляры класса. Можно, конечно сделать прослойку в виде еще одного класса по типу: “карты на руках”. Но это зависит от того, что с этими картами планируется делать.

Офлайн

#7 Янв. 7, 2015 21:23:41

kpotko
Зарегистрирован: 2015-01-07
Сообщения: 21
Репутация: +  1  -
Профиль   Отправить e-mail  

Ассоциация классов

4kpt_III
Вам предварительно необходимо написать механизм связывания двух отдельных классов. Я рекомендую просто сделать атрибут по типу списка. Потом добавлять в него и убирать из него экземпляры класса. Можно, конечно сделать прослойку в виде еще одного класса по типу: “карты на руках”. Но это зависит от того, что с этими картами планируется делать.

я вот , собственно, про это и хочу узнать. как сделать механизм связывания классов?
можете хотя бы пример написать, потому что я просто не представляю , как это происходит .

как экземпляр класса добавить в список другого класса?

Офлайн

#8 Янв. 7, 2015 21:41:09

andy4
Зарегистрирован: 2015-01-07
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Ассоциация классов

Смотря в каком порядке создаются экземпляры (или классы - если связь начинается на уровне создания классов). Вы хотите связать только 2 экземпляра или у Вас будет будет много?

Офлайн

#9 Янв. 7, 2015 21:43:35

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Ассоциация классов

В процессе выполнения.
Самый простой пример:

class Child(object):
#
    def __init__(self, name):
        self.name = name
#
    def __repr__(self):
        return "'child: {0}'".format(self.name)
#
#
class Parent(object):
#
    def __init__(self, name):
        self.name = name
        self.children = []
#
    def __repr__(self):
        return "'parent: {0}'".format(self.name)
#
#
child1 = Child("first")
child2 = Child("second")
#
parent = Parent("first")
parent.children.append(child1)
parent.children.append(child2)
#
print "child1: ", child1
print "child2: ", child2
print "parent: ", parent
print "parent-children: ", parent.children

P.S. Проще никак
P.S.S. Вам бы что-нибудь почитать по ООП…

Отредактировано 4kpt_III (Янв. 7, 2015 21:44:24)

Офлайн

#10 Янв. 7, 2015 21:45:04

kpotko
Зарегистрирован: 2015-01-07
Сообщения: 21
Репутация: +  1  -
Профиль   Отправить e-mail  

Ассоциация классов

andy4
Смотря в каком порядке создаются экземпляры (или классы - если связь начинается на уровне создания классов). Вы хотите связать только 2 экземпляра или у Вас будет будет много?
сначала создается экземпляр человека, потом создается экземпляр карты
для начала хотя бы 2, чтобы понять принцип

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version