fork download
  1. class Huy:
  2. norm_length = 15 # атрибут класса, доступен в Huy.norm_length
  3.  
  4. def __init__(self, length, width):
  5. """Инициализатор объекта класа Хуй, создает не класс, а конкретный хуй
  6. с конкретными параметрами"""
  7. self.length = length # записываем переданные при создании аргументы в качестве атрибутов для хуя
  8. self.width = width
  9.  
  10. def extend(self, length):
  11. """Увеличиваем хуй. Чтобы увеличить хуй, у нас должен быть конкретный хуй
  12. Мы же не можем увеличить абстрактный хуй, правильно? Вот мы и передаем его
  13. как селф - при выполнении кода он заменится на конкретный объект хуя, для
  14. которого мы вызываем метод
  15. например hui.extand(3) - будет равносильно Huy(self=hui, length=3)
  16. """
  17. self.length += length
  18.  
  19. def is_norm(self):
  20. """Проверяет, нормальный у тебя хуй или ты короткоствол"""
  21. # атрибуты класса передаются объекту поэтому можем обратиться к ним через self
  22. return self.length >= self.norm_length
  23.  
  24. @classmethod
  25. def change_norm_length(cls, delta):
  26. """Метод класса, тут мы можем изменить атрибуты класса и получить доступ
  27. к другим методам класса"""
  28. cls.norm_length += delta
  29.  
  30. @staticmethod
  31. def convert_sm_to_dm(size_in_sm):
  32. """Просто функция которая превращает сантиметры в дециметры"""
  33. return size_in_sm / 10
  34.  
  35. huy = Huy(14, 1) # вызывается инит, создаются атрибуты huy.length и huy.width
  36. huy.is_norm() # вызывается Huy.is_norm(huy), возвращается False
  37. huy.extend(3) # вызывается Huy.extend(huy, 3), huy.length = 17
  38. huy.is_norm() # True
  39. huy.change_norm_length(1) # изменяется атрибут КЛАССА, изменения актуальны для всех объектов хуев
  40. Huy.change_norm_length(2) # обе строки вызывают один и тот же метод, норма теперь равна 18
  41. huy2 = Huy(17, 6); huy2.is_norm() # False
  42. huy.is_norm() # False
  43. huy.convert_sm_to_dm(huy.length) # объект хуя не передается, поэтому надо передавать его явно
Success #stdin #stdout 0.03s 9648KB
stdin
Standard input is empty
stdout
Standard output is empty