класс БИФ, связанный с объектом, магический метод - десятый день грамматики обучения питона

Некоторые соответствующие БИФ:

issubclass (класс, classInfo) # определяет, является ли или подкласс, classInfo кортежи могут быть из множества классов, один из которых, возвращает истину, класс также считается их подкласс, объект представляет собой базовый класс для всех классов

isinstance (объект, classInfo) # определяет, является ли экземпляр этого класса, если объект не является экземпляром, непосредственно ложным

hasattr (объект, имя) #name запомнить плюс

GetAttr (объект, имя, [, по умолчанию]) # есть, возвращает значения атрибутов, нет, если выход по умолчанию устанавливается по умолчанию, не установлено Броски

SetAttr (объект, имя, значение)

delattr (объект, имя) # исключение не брошено

Свойство (FGET = нет, FSet = нет, Фдел = нет, док = нет) # установить атрибут, контролировать другие атрибуты, определенные

 

Волшебный метод! !

Как правило, в окружении __

 

Конструктор и деструктор:

__init __ (объект, [,]) используется для инициализации

__new __ (CLZ, [,])) используется для создания экземпляра объекта является первым вызовом функции, но редко переписано неизменен объект должен изменить, необходимо изменить, прежде чем его экземпляр, например, ул:

класс CapStr (ул):
     Защита  __new__ (CLZ, строка):
        Строка = string.supper ()
         возвращение ул. __new__ (CLZ, строка)

 

При создании экземпляра объекта capstr, строка в верхнем регистре, экземпляр объекта, а затем вызвать метод родительского класса, чтобы изменить его, прежде чем создавать его

После __del __ (), указывающий на все ссылки памяти Дель, этот метод вызывается

 

Тип (длина) Тип БИФ

тип (INT) Тип

тип (класс) Тип

Следующий метод может быть выполнен на объект класса арифметических операций , можно переписать

 

Магические методы
смысл
 
Основной метод магии
__new __ (ЦБС [, ...]) 1. __new__ метод в первом экземпляра объекта при вызове
2. Первый параметр является то , что этот класс, другие параметры используются для передачи непосредственно к методу __init__
3. __new__ решить , следует ли использовать __init__ метод, так как __new__ может вызывать другой конструктор класса или возвращен непосредственно в другие случаи этого объекта в качестве экземпляра класса, если не возвращать __new__ экземпляра объекта, то вызов не будет __init__
4. в основном используются __new__ Наследование типов неизменяемой строка или кортеж , такие как
__в себе[, ...]) Конструктор, метод инициализации, когда создается экземпляр называется
__del __ (само) Деструктор, когда экземпляр процесса разрушается, когда вызываемый
__call __ (само [, арг ...]) Разрешать экземпляр класса называется как функция: х (а, б) вызова х .__ вызова __ (а, б)
__len __ (сам) Когда определение Len поведение () при вызове
__repr __ (само) При определении () вызов Repr поведение
__str __ (само) При определении () поведение ул вызова
__bytes __ (само) Когда определение байтов () для действия
__hash __ (само) Определено поведение, когда хэш () вызов
__bool __ (само) Когда определено поведение при вызове BOOL () должен возвращать Верно или неверно
__format __ (я, format_spec) 定义当被 format() 调用时的行为
 
有关属性
__getattr__(self, name) 定义当用户试图获取一个不存在的属性时的行为
__getattribute__(self, name) 定义当该类的属性被访问时的行为
__setattr__(self, name, value) 定义当一个属性被设置时的行为
__delattr__(self, name) 定义当一个属性被删除时的行为
__dir__(self) 定义当 dir() 被调用时的行为
__get__(self, instance, owner) 定义当描述符的值被取得时的行为
__set__(self, instance, value) 定义当描述符的值被改变时的行为
__delete__(self, instance) 定义当描述符的值被删除时的行为
 
比较操作符
__lt__(self, other) 定义小于号的行为:x < y 调用 x.__lt__(y)
__le__(self, other) 定义小于等于号的行为:x <= y 调用 x.__le__(y)
__eq__(self, other) 定义等于号的行为:x == y 调用 x.__eq__(y)
__ne__(self, other) 定义不等号的行为:x != y 调用 x.__ne__(y)
__gt__(self, other) 定义大于号的行为:x > y 调用 x.__gt__(y)
__ge__(self, other) 定义大于等于号的行为:x >= y 调用 x.__ge__(y)
 
算数运算符
__add__(self, other) 定义加法的行为:+
__sub__(self, other) 定义减法的行为:-
__mul__(self, other) 定义乘法的行为:*
__truediv__(self, other) 定义真除法的行为:/
__floordiv__(self, other) 定义整数除法的行为://
__mod__(self, other) 定义取模算法的行为:%
__divmod__(self, other) 定义当被 divmod() 调用时的行为
__pow__(self, other[, modulo]) 定义当被 power() 调用或 ** 运算时的行为
__lshift__(self, other) 定义按位左移位的行为:<<
__rshift__(self, other) 定义按位右移位的行为:>>
__and__(self, other) 定义按位与操作的行为:&
__xor__(self, other) 定义按位异或操作的行为:^
__or__(self, other) 定义按位或操作的行为:|
 
反运算
__radd__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rsub__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rmul__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rtruediv__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rfloordiv__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rmod__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rdivmod__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rpow__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rlshift__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rrshift__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rand__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__rxor__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
__ror__(self, other) (与上方相同,当左操作数不支持相应的操作时被调用)
 
增量赋值运算
__iadd__(self, other) 定义赋值加法的行为:+=
__isub__(self, other) 定义赋值减法的行为:-=
__imul__(self, other) 定义赋值乘法的行为:*=
__itruediv__(self, other) 定义赋值真除法的行为:/=
__ifloordiv__(self, other) 定义赋值整数除法的行为://=
__imod__(self, other) 定义赋值取模算法的行为:%=
__ipow__(self, other[, modulo]) 定义赋值幂运算的行为:**=
__ilshift__(self, other) 定义赋值按位左移位的行为:<<=
__irshift__(self, other) 定义赋值按位右移位的行为:>>=
__iand__(self, other) 定义赋值按位与操作的行为:&=
__ixor__(self, other) 定义赋值按位异或操作的行为:^=
__ior__(self, other) 定义赋值按位或操作的行为:|=
 
一元操作符
__pos__(self) 定义正号的行为:+x
__neg__(self) 定义负号的行为:-x
__abs__(self) 定义当被 abs() 调用时的行为
__invert__(self) 定义按位求反的行为:~x
 
类型转换
__complex__(self) 定义当被 complex() 调用时的行为(需要返回恰当的值)
__int__(self) 定义当被 int() 调用时的行为(需要返回恰当的值)
__float__(self) 定义当被 float() 调用时的行为(需要返回恰当的值)
__round__(self[, n]) 定义当被 round() 调用时的行为(需要返回恰当的值)
__index__(self) 1. 当对象是被应用在切片表达式中时,实现整形强制转换
2. 如果你定义了一个可能在切片时用到的定制的数值型,你应该定义 __index__
3. 如果 __index__ 被定义,则 __int__ 也需要被定义,且返回相同的值
 
上下文管理(with 语句)
__enter__(self) 1. 定义当使用 with 语句时的初始化行为
2. __enter__ 的返回值被 with 语句的目标或者 as 后的名字绑定
__exit__(self, exc_type, exc_value, traceback) 1. 定义当一个代码块被执行或者终止后上下文管理器应该做什么
2. 一般被用来处理异常,清除工作或者做一些代码块执行完毕之后的日常工作
 
容器类型
__len__(self) 定义当被 len() 调用时的行为(返回容器中元素的个数)
__getitem__(self, key) 定义获取容器中指定元素的行为,相当于 self[key]
__setitem__(self, key, value) 定义设置容器中指定元素的行为,相当于 self[key] = value
__delitem__(self, key) 定义删除容器中指定元素的行为,相当于 del self[key]
__iter__(self) 定义当迭代容器中的元素的行为
__reversed__(self) 定义当被 reversed() 调用时的行为
__contains__(self, item) 定义当使用成员测试运算符(in 或 not in)时的行为

反运算是指当前面的正运算方法没找到时,调用后面的反运算方法

 

рекомендация

отwww.cnblogs.com/code-fun/p/11778653.html
рекомендация