Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- class Crowd:
- """ kjdsldk jslkjgs lkjgds
- """
- def __init__(self, name, people, aggresiveness=0):
- self.name = name
- self.people = people
- self.aggresiveness = aggresiveness
- def hire(self, *persons):
- self.people += persons
- def get_names(self):
- return [x.full_name for x in self.people]
- def inc_aggresiveness(self, value=1):
- self.aggresiveness += value
- def __repr__(self):
- return 'Crowd(%s, size=%d)' % (
- self.name, len(self.people))
- def __str__(self):
- if self.name:
- return self.name + ': ' + ', '.join(self.get_names()) + ' AGG:%s' % self.aggresiveness
- else:
- return ', '.join(self.get_names()) + ' AGG:%s' % self.aggresiveness
- def __add__(self, other):
- import copy
- t = copy.deepcopy(self)
- if isinstance(other, Crowd):
- t.people += other.people
- return t
- t.hire(other)
- return t
- def __iter__(self):
- self._i = 0
- return self
- def __next__(self):
- if self._i < len(self.people):
- t = self._i
- self._i += 1
- return self.people[t]
- else:
- raise StopIteration
- class Person:
- def __init__(self, first_name, last_name, birth_date):
- self.first_name = first_name
- self.last_name = last_name
- self.birth_date = birth_date
- def age(self):
- result = getattr(self, '_age', None)
- if not result:
- result = datetime.date.today().year - \
- self.birth_date.year
- self._age = result
- return result
- @property
- def full_name(self):
- return self.first_name + ' ' + self.last_name
- @full_name.setter
- def full_name(self, full_name):
- self.first_name, self.last_name = \
- tuple(full_name.split())
- def __repr__(self):
- return 'Person(%s, %s, %s)' % (
- self.first_name, self.last_name,
- self.birth_date,
- )
- def __str__(self):
- return '%s is %d years old' % (
- self.full_name,
- self.age(),
- )
- def __add__(self, other):
- return Crowd(None, [self, other])
- john = Person('John', 'Doe', datetime.date(year=1985, month=3, day=6))
- dave = Person('Dave', 'Jones', datetime.date(year=1989, month=5, day=21))
- team = Crowd('IT department', [john, dave])
- jane = Person('Jane', 'Brown', datetime.date(year=1987, month=4, day=17))
- # # team.hire(jane)
- monica = Person('Monica', 'Geller', datetime.date(year=1981, month=3, day=17))
- guys = [jane, monica]
- # for x in guys:
- # team.hire(x)
- team.hire(*guys)
- # team1 = Crowd('Support team', [jane, monica], aggresiveness=4)
- # print(team)
- for guy in team:
- print(guy)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement