Рассмотрим следующий пример итеративного класса, который делает факториалы из заданного числа:
import math
class Factorial(object):
def __init__(self, num, maxsize=10e12):
self.num = num
self.maxsize = maxsize
def __repr__(self):
if __name__ == '__main__':
return f'<{self.__class__.__name__} object at {hex(id(self.__class__))}>'
else:
return '<' + self.__class__.__module__ + '.' + self.__class__.__name__ + ' object at ' + hex(id(self.__class__)) + '>'
def __iter__(self):
for i in range(1,self.num+1):
if math.factorial(i) > self.maxsize:
break
yield math.factorial(i)
Итак, конечно, у нас есть методы __init__
, __repr__
и __iter__
, которыеЯ все читал об онлайн.У меня два вопроса:
Как бы вы назвали эти методы?Я знаю, что вы можете описать __init__
как своего рода конструктор, но есть ли специальное имя, к которому относятся все эти __<blah>__
методы, когда дело доходит до классов?
Есть лисписок всех этих так называемых «специальных» или «встроенных» функций класса, который сообщает, что они из себя представляют и что они делают в контексте класса?Те, о которых я уже знаю, это __init__
, __enter__
, __next__
, __exit__
, __iter__
, __str__
, __repr__
и __call__
.Или это почти полный список, за исключением нескольких?
Я уже некоторое время ломал голову над этим (в основном потому, что не знаю, как позвонить)эти функции, поэтому я не могу их исследовать).