123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- '''
- Функции str() и print() вызывают __str__()
- repr() - __repr__()
- Если __str__ нет, то будет вызваться __repr__
- '''
- class User:
- def __init__(self, first_name):
- self.first_name = first_name
- def __str__(self):
- return f'User {self.first_name}'
- def __repr__(self):
- return f'Repr Usef {self.first_name}'
- class Pizza:
- pass
- def test_1():
- # print(repr([1, 2, 3]))
- user = User('John')
- print(repr(user))
- print(repr(Pizza()))
-
- class UnknownUser:
- pass
- def test_2():
- users = [UnknownUser(), UnknownUser()]
- print(users)
- users_with_name = [User('Billy'), User('Jimmy')]
- print(users_with_name)
- print(users_with_name[0])
- print(users_with_name[1])
- class SuperUser:
- def __init__(self, first_name, last_name):
- self.first_name = first_name
- self.last_name = last_name
- def __str__(self):
- return f"__str__ method: {self.first_name} {self.last_name}"
- def __repr__(self):
- return f"__repr__ method: {self.first_name} {self.last_name}"
- def test_3():
- user = SuperUser("Vasya", "Pypkin")
- print(f"{repr(user)}")
- # или лучше воспользоваться !r
- print(f"{user!r}") # !r вызовет не __str__, а __repr__
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- class Pizza:
-
- def __init__(self, name, ingredients):
- self.name = name
- if ingredients is None:
- self.ingredients = []
- else:
- self.ingredients = ingredients
-
- def __repr__(self):
- self.ingredients.sort(key=lambda x: x.weight, reverse=True)
- ret = f'Пицца {self.name} состоит из:\n'
- for ing in self.ingredients:
- ret += ing.__repr__() + '\n'
- return ret[:-1]
- class Ingredient:
-
- def __init__(self, name, weight):
- self.name = name
- self.weight = weight
- def __repr__(self):
- return f'{self.name}: {self.weight}г.'
- def test_4():
- barbecue = Pizza('BBQ', [
- Ingredient('chicken', 200),
- Ingredient('mozzarella', 300),
- Ingredient('sauce bbq', 150),
- Ingredient('red onion', 150)
- ])
- print(barbecue)
- def test_5():
- ing = [
- Ingredient('chicken', 200),
- Ingredient('mozzarella', 300),
- Ingredient('sauce bbq', 150),
- Ingredient('red onion', 150)
- ]
- ing.sort(key=lambda x: x.weight, reverse=True)
- print(ing)
-
- # foo = {x.name: x.weight for x in ing}
- # foo2 = sorted(foo.items(), key=lambda item: item[1], reverse=True)
- # print(foo)
- # print(foo2)
- def main():
- # test_1()
- # test_2()
- # test_3()
- test_4()
- # test_5()
- if __name__ == '__main__':
- main()
|