February 29, 2024

Конструктор класса – метод __init__()

# Напишите конструктор для класса Student

class Student:
	def __init__(self, name: str, age: int):
		self.name = name
		self.age = age
		self.show_message()

	def show_message(self) -> 'Student':
		print(f'Студент с именем {self.name} и возрастом {self.age} был добавлен в базу данных')
		return self


def main():
	students: list[Student] = [
		Student('Егор', 16),
		Student('Александра', 18),
		Student('Анастасия', 18)
	]


if __name__ == '__main__':
	main()
# Напишите конструктор для класса Phone с атрибутами по умолчанию name, model, weight.
# Создайте методы класса:
# print_data() – для вывода информации об объекте.
# get_number() – для получения информации о номере телефона.
# receive_call() – в функцию передается имя звонящего. На экран выводится строка «Звонит имя на номер_телефона».
# Вариант усложнения: задайте конструктор при помощи *args (переменной для произвольного кол-ва позиционных аргументов).

class Phone:
	# Конструктор
	def __init__(self, name: str = 'Samsung', model: str = 'S24 Ultra', weight: int = 232, number: str = None, *installed_apps):
		print(f'Вызван метод-конструктор объекта {self}')
		self.name = name
		self.model = model
		self.weight = weight
		self.number = number
		self.installed_apps = installed_apps

	# Деструктор
	def __del__(self):
		print(f'Вызван метод-деструктор объекта {self}')

	def get_number(self) -> str:
		return self.number

	def set_number(self, number: str) -> 'Phone':
		self.number = number
		return self

	def print_data(self) -> 'Phone':
		print('\n'.join([
			f'Объект {self.__class__.__name__}',
			f'  Название: {self.name}',
			f'  Модель: {self.model}',
			f'  Вес: {self.weight}',
			f'  Номер телефона: {self.number}',
			f'  Установленные приложения: {" | ".join(self.installed_apps)}'
		]), end = '\n\n')

		return self

	def receive_call(self, caller_name: str) -> 'Phone':
		print(f'Звонит {caller_name} на {self.number}')
		return self


def main():
	a = Phone(
		'Samsung', 'S24 Ultra', 232, '123-456-789',
		'Telegram', 'Play Store', 'YouTube', 'Twitch'
	)
	a.set_number('+7 (123) 456-78-90').print_data()


if __name__ == '__main__':
	main()