meta_2.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. class Circle:
  2. PI = 3.14
  3. def __new__(cls, radius):
  4. cls.get_area = lambda self: self._radius**2 * self.PI
  5. cls.get_perimeter = lambda self: self.PI * self._diameter
  6. cls.get_radius = lambda self: self._radius
  7. cls.get_diameter = lambda self: self._diameter
  8. instance = super().__new__(cls)
  9. instance._radius = radius
  10. instance._diameter = 2 * radius
  11. return instance
  12. def test_1():
  13. circle_instance = Circle(3.5)
  14. print(f"Radius: {circle_instance.get_radius()}")
  15. print(f"Diameter: {circle_instance.get_diameter()}")
  16. print(f"Area: {circle_instance.get_area()}")
  17. print(f"Perimeter: {circle_instance.get_perimeter()}")
  18. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  19. class BaseConfig:
  20. def __new__(cls, *args, **kwargs):
  21. instance = super(BaseConfig, cls).__new__(cls)
  22. instance.debug = False
  23. instance.log_level = "INFO"
  24. return instance
  25. class EmailConfig(BaseConfig):
  26. def __new__(cls, *args, **kwargs):
  27. instance = super().__new__(cls)
  28. instance.smtp_server = 'smtp.gmail.com'
  29. instance.smtp_port = 587
  30. instance.username = 'boss_of_gym@gmail.com'
  31. instance.password = ''
  32. return instance
  33. class DatabaseConfig(BaseConfig):
  34. def __new__(cls, *args, **kwargs):
  35. instance = super().__new__(cls)
  36. instance.db_host = '127.0.0.1'
  37. instance.db_port = 5432
  38. instance.db_name = 'cookies'
  39. instance.db_user = 'admin'
  40. instance.db_password = 'admin'
  41. return instance
  42. def test_2():
  43. email_config = EmailConfig()
  44. print("SMTP server Configuration:")
  45. print(f"Server: {email_config.smtp_server}")
  46. print(f"Port: {email_config.smtp_port}")
  47. print(f"User: {email_config.username}")
  48. print(f"Password: {email_config.password}")
  49. print(f"Debug: {email_config.debug}")
  50. print(f"Logger: {email_config.log_level}")
  51. def main():
  52. # test_1()
  53. test_2()
  54. if __name__ == '__main__':
  55. main()