| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | # Множественное наследование# MROclass Doctor:    def can_cure(self):        print('Я доктор, я умею лечить')class Builder:    def can_build(self):        print('Я строитель, я умею строить')class Person(Doctor, Builder):    def can_build(self):        print('Я человек, я тоже умею строить')        Builder.can_build()# ----------------------------------------------------------class Product:    def __init__(self, name, price):        self.name = name        self.price = price    def get_price(self):        return self.price    class Discount():        def apply_discount(self, discount):        self.price -= self.price * discountclass DiscountProduct(Product, Discount):    pass# ----------------------------------------------------------class Mother:        def __init__(self, mother_name):        self.mother_name = mother_nameclass Father:    def __init__(self, father_name):        self.father_name = father_nameclass Child(Mother, Father):        def __init__(self, child_name, mother_name, father_name):        super().__init__(mother_name)        Father.__init__(self, father_name)        self.child_name = child_name    def introduce(self):        return f"Меня зовут {self.child_name}. Моя мама - {self.mother_name}, мой папа - {self.father_name}"# ----------------------------------------------------------class User:    def __init__(self, name, password):        self.name = name        self.password = password    def get_info(self):        return f"Имя пользователя: {self.name}"    class Authentication(User):    def authenticate(self, name, password):        return self.name == name and self.password == passwordclass AuthenticatedUser(Authentication, User):    pass# ----------------------------------------------------------class Person:    def __init__(self, name, age):        self.name = name        self.age = age            def display_person_info(self):        print(f"Person: {self.name}, {self.age}")class Company:    def __init__(self, company_name, location):        self.company_name = company_name        self.location = location    def display_company_info(self):        print(f"Company: {self.company_name}, {self.location}")class Employee(Person, Company):    def __init__(self, name, age, company_name, location):        super().__init__(name, age)        Company.__init__(self, company_name, location)def main():    emp = Employee('Jessica', 28, 'Google', 'Atlanta')    emp.display_person_info()    emp.display_company_info()    # s = Person()    # s.can_build()    # print(Person.__mro__)    # p1 = DiscountProduct('Телефон', 10000)    # p1.apply_discount(0.1)    # print(p1.get_price())if __name__ == '__main__':    main()
 |