Created
February 16, 2026 09:51
-
-
Save sunmeat/6ada00a9010a4d092536209add4a8543 to your computer and use it in GitHub Desktop.
атрибути класу (статичні поля) в пайтон
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class Monster: | |
| # це і є "статичне поле" (атрибут класу) | |
| count = 0 | |
| def __init__(self, health=100, attack=10, mana=50): | |
| # ініціалізація екземплярних (звичайних) атрибутів | |
| self.health = health | |
| self.attack = attack | |
| self.mana = mana | |
| # зміна спільної для всіх екземплярів змінної | |
| Monster.count += 1 | |
| print(f"створено монстра #{Monster.count}", end="") | |
| if health != 100 or attack != 10 or mana != 50: | |
| print(f" з параметрами h={health}, a={attack}, m={mana}") | |
| else: | |
| print() | |
| @classmethod | |
| def get_count(cls): | |
| """статичний/класовій метод для отримання кількості монстрів""" | |
| return cls.count | |
| def print_info(self): | |
| print(f"монстр #{Monster.count}: " | |
| f"здоров'я = {self.health}, " | |
| f"атака = {self.attack}, " | |
| f"мана = {self.mana}") | |
| #################################################################################### | |
| if __name__ == "__main__": | |
| monsters = [] | |
| # створення кількома різними способами | |
| monsters.append(Monster()) # без параметрів | |
| monsters.append(Monster(health=150)) # тільки здоров'я | |
| monsters.append(Monster(200, 20, 100)) # усі параметри | |
| print("\nінформація про всіх монстрів:") | |
| for monster in monsters: | |
| monster.print_info() | |
| print(f"\nзагальна кількість монстрів: {Monster.get_count()}") | |
| # або так само працює: Monster.count |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment