ООП — переопределенные методы

__len__ -переопределение функции len()

Различные методы, доступные разным типам данных пройденным ранее можно переопределять для класса:

# переопределенная функция, возвращающая размер объекта класса
def __len__(self):
return len(self.some_iterable)

После этого функция len(class) будет работать

__getitem__ -переопределение оператора []
__setitem__ -переопределение оператора []= (задание переменной через индекс/итератор)

class len_test:
	def __init__(self, some_iterable):
		self.some_iterable = some_iterable

# переопределенная функция, возвращающая элемент объекта класса
	def __getitem__(self, i): 
		return self.some_iterable[i]

# переопределенная функция, изменяющая элемент объекта класса
	def __setitem__(self, key, value): 
		self.some_iterable[key] = value

# переопределенная функция, удаляющая элемент объекта класса
	def __delitem__(self, key):
		del self.some_iterable[key]

__contains__ — нужен для итерации в циклах через in и для проверок в операторах ветвления

class SomeClass:
	def __init__(self):
		self.some_iterable = [1, 2]

	def __contains__(self, item):
		return item in self.some_iterable
my_container = SomeClass()

print(1 in my_container)
print(2 in my_container)
print(3 in my_container)

__mul__-определяет поведение при умножении объекта класса

class SomeClass:
	def __init__(self, value):
		self.value = value

	def __mul__(self, number):
		return self.value*number

obj = SomeClass(42)
print(obj * 100) # 4200

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *