Advertisement
Guest User

Untitled

a guest
Apr 28th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.40 KB | None | 0 0
  1. # encoding: utf-8
  2. from __future__ import print_function
  3.  
  4. class Person():
  5.     def __init__(self, name):
  6.         self.name = name
  7.  
  8.     def get_relationships(self):
  9.         # SELECT relation, p2 from Relationships where p1.name = self.name
  10.         return [r for r in all_relationships if r.p1.name == self.name]
  11.  
  12. all_relationships = []
  13.  
  14. class Relationship():
  15.     # if relation is not defined, use a default value
  16.     def __init__(self, p1, p2, relation = 'parente'):
  17.         self.p1 = p1
  18.         self.p2 = p2
  19.         self.relation = relation
  20.  
  21.     def __repr__(self):
  22.         return '{} e {} de {}'.format(self.p1.name, self.relation, self.p2.name)
  23.  
  24. def get_opposite(r):
  25.     #  all possible values should be pre-defined
  26.     def opposite_of(relation):
  27.         if relation == 'pai':
  28.             return 'filho'
  29.         if relation == 'filho':
  30.             return 'pai'
  31.         # default case
  32.         return 'parente'
  33.  
  34.     return Relationship(r.p2, r.p1, opposite_of(r.relation))
  35.  
  36. def save_relationship(relationship):
  37.     # SAVE Relationship and its opposite to Relationships table
  38.     all_relationships.append(relationship)
  39.     all_relationships.append(get_opposite(relationship))
  40.  
  41.  
  42. joao = Person('joao')
  43. maria = Person('maria')
  44. jose = Person('jose')
  45.  
  46. save_relationship(Relationship(joao, maria, 'pai'))
  47. save_relationship(Relationship(joao, jose))
  48.  
  49. print('parentes de joao')
  50. for r in joao.get_relationships():
  51.     print('\t',r)
  52. print()
  53.  
  54. print('todos os parentescos')
  55. for r in all_relationships:
  56.     print('\t',r)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement