Типы данных
- Numeric data types
- int, float, complex
- String data types
- str
- Sequence types
- list, tuple, range
- Binary types
- bytes, bytearray, memoryview
- Mapping data type
- dict
- Boolean type
- bool
- Set data types
- set, frozenset
метод | что реализует | для чего вызывается |
__init__ | конструктор | создание объекта x=Class(args) |
__del__ | деструктор | уничтожение объекта X |
__add__ | операция + | X + Y, X += Y если отсутствует iadd |
__or__ | операция OR | X |
__repr__, str | вывод, преобразования | print(X), repr(X), str(X) |
__call__ | вызовы функций | X(*args, **kargs) |
__getattr__ | извлечение атрибута | X.undefined |
__setattr__ | присваивание атрибута | X.any = value |
__delattr__ | удаление атрибута | del X.any |
__getarrtibute__ | извлечение атрибута | X.any |
__getitem__ | индексация, нарезание, итерация | X[key], X[i:j], циклы for и другие если отсуствует iter |
__setitem__ | присваивание по индексу и срез | X[key]=value, X[i:j]=iterable |
__delitem__ | удаление по индексу или срезу | del X[key], del[i:j] |
__len__ | длина len(X), проверки истинности если отсуствует bool | |
__bool__ | булевские проверки | bool(X) |
__lt__ | сравнения | X < Y |
__gt__ | сравнения | X > Y |
__le__ | сравнения | X <= Y |
__ge__ | сравнения | X >= Y |
__eq__ | сравнения | X == Y |
__ne__ | сравнения | X != Y |
__radd__ | правосторонние операции | other + X |
__iadd__ | дополненные на месте операции | X += Y (либо иначе add) |
__iter__ | итерационные контексты | I=iter(x), next(I); циклы for, in если отсуствуют contains, все включения map(F,X) |
__next__ | итерационные контексты | см iter |
__contains__ | проверка членства | item in X (любой итерируемый объект) |
__index__ | целочисленное значение | hex(X), bin(X), oct(X), O(X), O[X:] |
__enter__ | диспетчер контекста (см далее) | with obj as var: |
__exit__ | диспетчер контекста (см далее) | |
__get__, | set атрибуты дескриптора | X.attr, X.attr = value |
__delete__ | атрибуты дескриптора | del X.attr |
__new__ | создание создание объекта перед init |
class foo(): def __init__(self, kind=None): self.kind = kind def __call__(self, kind=None): return foo(kind=kind) def my_print(self): print (self.kind) def line(self): return self(kind='line') def bar(self): return self(kind='bar') a = foo() a.bar().line().bar().bar().line().my_print()
def linear(a, b): def result(x): return a * x + b return result return linear(2, 5)(5)
class linear: def __init__(self, a, b): self.a, self.b = a, b def __call__(self, x): return self.a * x + self.b p return linear(2, 5)(5)