|
@@ -0,0 +1,128 @@
|
|
|
+# Множественное наследование
|
|
|
+# MRO
|
|
|
+
|
|
|
+class 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 * discount
|
|
|
+
|
|
|
+
|
|
|
+class DiscountProduct(Product, Discount):
|
|
|
+ pass
|
|
|
+
|
|
|
+# ----------------------------------------------------------
|
|
|
+
|
|
|
+class Mother:
|
|
|
+
|
|
|
+ def __init__(self, mother_name):
|
|
|
+ self.mother_name = mother_name
|
|
|
+
|
|
|
+class Father:
|
|
|
+
|
|
|
+ def __init__(self, father_name):
|
|
|
+ self.father_name = father_name
|
|
|
+
|
|
|
+class 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 == password
|
|
|
+
|
|
|
+
|
|
|
+class 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()
|