mixin.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # --------------------------------------------------
  2. # Миксин для преобразования к строке
  3. class ToStringMixin:
  4. def __str__(self):
  5. return f"{self.__class__.__name__}({str(self.__dict__)})"
  6. class MyClass(ToStringMixin):
  7. def __init__(self, x, y):
  8. self.x = x
  9. self.y = y
  10. def main():
  11. obj = MyClass(1, 2)
  12. print(obj)
  13. if __name__ == '__main__':
  14. main()
  15. # --------------------------------------------------
  16. # Миксин для подстчета количества экземпляров
  17. class CountInstancesMixin:
  18. count = 0
  19. def __init__(self, *args, **kwargs):
  20. super().__init__(*args, **kwargs)
  21. self.__class__.count += 1
  22. class Cat(CountInstancesMixin):
  23. def __init__(self, name):
  24. self.name = name
  25. super().__init__()
  26. class Dog(CountInstancesMixin):
  27. def __init__(self, name):
  28. super().__init__()
  29. def main():
  30. o1 = Cat('qwe')
  31. o2 = Cat('ewer')
  32. o3 = Dog('sdf')
  33. print(Cat.count)
  34. print(Dog.count)
  35. if __name__ == '__main__':
  36. main()