Форум сайта python.su
1
Подскажите , пожалуйста, как сделать связь между классами?
т.е. есть 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)
Офлайн
39
Такие вещи реализуются на уровне БД. Если брать ОРМ, то это relationship. Сам ОРМ соберет Вам объекты нужным образом. Если же мы все же пытаемся сделать так, как Вы хотите, то Вам необходимо сделать атрибут, в котором бы Вы хранили необходимы экземпляры класса IdCard.
P.S. Оборачивайте код в теги. Читать сложно.
Отредактировано 4kpt_III (Янв. 7, 2015 20:17:48)
Офлайн
1
4kpt_III
Такие вещи реализуются на уровне БД. Если брать ОРМ, то это relationship. Сам ОРМ соберет Вам объекты нужным образом. Если же мы все же пытаемся сделать так, как Вы хотите, то Вам необходимо сделать атрибут, в котором бы Вы хранили необходимы экземпляры класса IdCard.P.S. Оборачивайте код в теги. Читать сложно.
Офлайн
103
kpotkoа где она привязана? где это указывается?
которая привязана к нему.
Офлайн
1
terabaytну вот собственно это я и хотел бы узнать, как это указать.
Офлайн
39
Вам предварительно необходимо написать механизм связывания двух отдельных классов. Я рекомендую просто сделать атрибут по типу списка. Потом добавлять в него и убирать из него экземпляры класса. Можно, конечно сделать прослойку в виде еще одного класса по типу: “карты на руках”. Но это зависит от того, что с этими картами планируется делать.
Офлайн
1
4kpt_III
Вам предварительно необходимо написать механизм связывания двух отдельных классов. Я рекомендую просто сделать атрибут по типу списка. Потом добавлять в него и убирать из него экземпляры класса. Можно, конечно сделать прослойку в виде еще одного класса по типу: “карты на руках”. Но это зависит от того, что с этими картами планируется делать.
Офлайн
1
Смотря в каком порядке создаются экземпляры (или классы - если связь начинается на уровне создания классов). Вы хотите связать только 2 экземпляра или у Вас будет будет много?
Офлайн
39
В процессе выполнения.
Самый простой пример:
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

Отредактировано 4kpt_III (Янв. 7, 2015 21:44:24)
Офлайн
1
andy4сначала создается экземпляр человека, потом создается экземпляр карты
Смотря в каком порядке создаются экземпляры (или классы - если связь начинается на уровне создания классов). Вы хотите связать только 2 экземпляра или у Вас будет будет много?
Офлайн