Найти - Пользователи
Полная версия: Ассоциация классов
Начало » Python для новичков » Ассоциация классов
1 2
kpotko
Подскажите , пожалуйста, как сделать связь между классами?
т.е. есть 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
Такие вещи реализуются на уровне БД. Если брать ОРМ, то это relationship. Сам ОРМ соберет Вам объекты нужным образом. Если же мы все же пытаемся сделать так, как Вы хотите, то Вам необходимо сделать атрибут, в котором бы Вы хранили необходимы экземпляры класса IdCard.

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

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

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

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

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
andy4
Смотря в каком порядке создаются экземпляры (или классы - если связь начинается на уровне создания классов). Вы хотите связать только 2 экземпляра или у Вас будет будет много?
сначала создается экземпляр человека, потом создается экземпляр карты
для начала хотя бы 2, чтобы понять принцип
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB