kpotko
Янв. 7, 2015 20:02:03
Подскажите , пожалуйста, как сделать связь между классами?
т.е. есть 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
4kpt_III
Янв. 7, 2015 20:16:43
Такие вещи реализуются на уровне БД. Если брать ОРМ, то это relationship. Сам ОРМ соберет Вам объекты нужным образом. Если же мы все же пытаемся сделать так, как Вы хотите, то Вам необходимо сделать атрибут, в котором бы Вы хранили необходимы экземпляры класса IdCard.
P.S. Оборачивайте код в теги. Читать сложно.
kpotko
Янв. 7, 2015 20:25:59
4kpt_III
Такие вещи реализуются на уровне БД. Если брать ОРМ, то это relationship. Сам ОРМ соберет Вам объекты нужным образом. Если же мы все же пытаемся сделать так, как Вы хотите, то Вам необходимо сделать атрибут, в котором бы Вы хранили необходимы экземпляры класса IdCard.P.S. Оборачивайте код в теги. Читать сложно.
можете подсказать, как будет выглядеть этот атрибут для хранения экземпляра?
P.s. за код извиняюсь, первый раз на сайте, писал с пробелами, при отправке пробелы слетели
terabayt
Янв. 7, 2015 20:26:26
kpotko
которая привязана к нему.
а где она привязана? где это указывается?
kpotko
Янв. 7, 2015 20:28:08
terabayt
ну вот собственно это я и хотел бы узнать, как это указать.
Выше подсказали, что нужно как-то создать атрибут для хранения экземпляра объекта карты
4kpt_III
Янв. 7, 2015 21:06:53
Вам предварительно необходимо написать механизм связывания двух отдельных классов. Я рекомендую просто сделать атрибут по типу списка. Потом добавлять в него и убирать из него экземпляры класса. Можно, конечно сделать прослойку в виде еще одного класса по типу: “карты на руках”. Но это зависит от того, что с этими картами планируется делать.
kpotko
Янв. 7, 2015 21:23:41
4kpt_III
Вам предварительно необходимо написать механизм связывания двух отдельных классов. Я рекомендую просто сделать атрибут по типу списка. Потом добавлять в него и убирать из него экземпляры класса. Можно, конечно сделать прослойку в виде еще одного класса по типу: “карты на руках”. Но это зависит от того, что с этими картами планируется делать.
я вот , собственно, про это и хочу узнать. как сделать механизм связывания классов?
можете хотя бы пример написать, потому что я просто не представляю , как это происходит .
как экземпляр класса добавить в список другого класса?
andy4
Янв. 7, 2015 21:41:09
Смотря в каком порядке создаются экземпляры (или классы - если связь начинается на уровне создания классов). Вы хотите связать только 2 экземпляра или у Вас будет будет много?
4kpt_III
Янв. 7, 2015 21:43:35
В процессе выполнения.
Самый простой пример:
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. Вам бы что-нибудь почитать по ООП…
kpotko
Янв. 7, 2015 21:45:04
andy4
Смотря в каком порядке создаются экземпляры (или классы - если связь начинается на уровне создания классов). Вы хотите связать только 2 экземпляра или у Вас будет будет много?
сначала создается экземпляр человека, потом создается экземпляр карты
для начала хотя бы 2, чтобы понять принцип