Светлана обнови решението на 29.03.2013 21:19 (преди около 12 години)
▸ Покажи разликите+class Person:
+
+ def __init__(self, name, birth_year, gender, father=None, mother=None):
+ self.name = name
+ self.birth_year = birth_year
+ self.gender = gender
+ self._children = []
+ self.father = father
+ self.mother = mother
+ if father:
+ father._children += [self]
+ if mother:
+ mother._children += [self]
+
+ def get_brothers(self):
+ brothers = []
+ if self.father:
+ brothers += filter(lambda x: x.gender == "M",
+ self.father._children)
+ if self.mother:
+ brothers += filter(lambda x: x.gender == "M",
+ self.mother._children)
+ return sorted(set(brothers) - {self})
+
+ def get_sisters(self):
+ sisters = []
+ if self.father:
+ sisters += filter(lambda x: x.gender == "F", self.father._children)
+ if self.mother:
+ sisters += filter(lambda x: x.gender == "F", self.mother._children)
+ return sorted(set(sisters) - {self})
+
+ def children(self, gender=None):
+ if gender:
+ return list(filter(lambda x: x.gender == gender, self._children))
+ return self._children
+
+ def is_direct_successor(self, person):
+ return person in self._children