Skip to content

D0mln0/py-person-class

This branch is 3 commits behind mate-academy/py-person-class:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e075ff6 · Feb 23, 2023

History

30 Commits
Jun 10, 2022
Jan 18, 2022
Sep 19, 2022
Oct 5, 2022
Jan 17, 2022
Feb 23, 2023
Sep 19, 2022
Oct 5, 2022

Repository files navigation

Class Person

You have a list of dicts people, every dict means a person, it has keys: name, age, wife/husband - depends on person is male or female. All names are different. Key wife/husband can be either None or name of another person.

Create class Person. It's __init__ method takes and store name, age of a person. This class also should have a class attribute people, it is a dict that stores Person instances by their name. The __init__ method should add elements to this attribute.

Write function create_person_list, this function takes list people and return list with Person instances instead of dicts.

Note:

If person's key wife/husband is not None - create_person_list should add attribute wife/husband respectively to its instance. This attribute should be a link to a Person instance with name the same as wife/husband key in person's dict.

Example:

people = [
    {"name": "Ross", "age": 30, "wife": "Rachel"},
    {"name": "Joey", "age": 29, "wife": None},
    {"name": "Rachel", "age": 28, "husband": "Ross"}
]

person_list = create_person_list(people) 
isinstance(person_list[0], Person) # True
person_list[0].name == "Ross"
person_list[0].wife is person_list[2] # True
person_list[0].wife.name == "Rachel"

person_list[1].name == "Joey"
person_list[1].wife
# AttributeError

isinstance(person_list[2], Person) # True
person_list[2].name == "Rachel"
person_list[2].husband is person_list[0] # True
# The same as person_list[0]
person_list[2].husband.name == "Ross"
person_list[2].husband.wife is person_list[2]  # True

Person.people == {
    "Ross": <__main__.Person object at 0x10c20ca60>,
    "Joey": <__main__.Person object at 0x10c180a00>,
    "Rachel": <__main__.Person object at 0x10c1804f0>
}

Hint - use pytest for testing

Note: Check your code using this checklist before pushing your solution.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%