龙空技术网

Python魔术方法

有梦爱幻想的女孩 322

前言:

眼前姐妹们对“python不等号”大约比较注重,姐妹们都需要学习一些“python不等号”的相关资讯。那么小编在网摘上收集了一些对于“python不等号””的相关内容,希望姐妹们能喜欢,朋友们快快来学习一下吧!

1.什么是魔术方法在Python中以两个下划线开头和结尾的方法被称为魔术方法,魔术方法都是一些内置方法;2.基本魔术方法__new__:是在一个对象实例化的时候所调用的第一个方法,用来创建类并返回这个类的实例;__init__:构造器,是一个初始化方法,在一个实例被创建之后调用;__del__:析构器,当一个实例被销毁的时候调用的方法;__bool__:如果对象实现了bool方法,那么返回结果,非0为真,如果没有实现bool方法,调用len方法,返回非0为真;__hash__:返回一个整数,表明对象可以hash;__repr__:返回对象的字符串表达式,如果没有实现,直接返回对象内存地址字符串;__str__:str()、print()、format()函数打印对象字符串,会直接调用str方法,如果没有实现,会调用repr方法;__hash__:定义当被 hash() 调用时的行为;__bytes__:定义当被 bytes() 调用时的行为;__format__:定义当被 format() 调用时的行为;3.有关属性魔术方法__getattr__:定义当用户试图获取一个不存在的属性时的行为;__setattr__:定义当一个属性被设置时的行为;__getattribute__:定义当该类的属性被访问时的行为;__delattr__:删除一个属性时执行的方法;__dir__:定义当 dir() 被调用时的行为;__get__:定义当描述符的值被取得时的行为;__set__:定义当描述符的值被改变时的行为;__delete__:定义当描述符的值被删除时的行为;4.运算符相关魔术方法

class Student: def __init__(self, x): self.x = x def __add__(self, other): return self.x + other.x def __sub__(self, other): return self.x - other.xa = Student(100)b = Student(200)print(b-a)print(b+a)
__add__:定义加法的方法;__sub__:定义减法的方法;__mul__:定义乘法的方法;__truediv__:定义除法的方法;__floordiv__:定义整数除法的行为://;__mod__:定义取模算法的行为:%;__divmod__:定义当被 divmod() 调用时的行为;__pow__:定义当被 power() 调用或 ** 运算时的行为;__lshift__:定义按位左移位的行为:<<;__rshift__:定义按位右移位的行为:>>;__and__:定义按位与操作的行为:&;__xor__:定义按位异或操作的行为:^;__or__:定义按位或操作的行为:|;5.比较操作符相关魔术方法__eq__:定义等于号的方法,等价于==;__lt__:定义小于号方法,等价于<;__gt__:定义大于号方法,等价于>;__le__:定义小于等于号的行为,等价于 <= ;__ne__:定义不等号的行为,等价于!= ;__ge__:定义大于等于号的行为,等价于 >= ;6.容器相关的魔术方法
class Student: def __init__(self): self.items = {} def __len__(self): return len(self.items) # 如果stu.items不为空,返回True def __bool__(self): return True if len(self) else False def __iter__(self): return iter(self.items) def __getitem__(self, item): return self.items[item] def __setitem__(self, key, value): self.items[key] = valuestu= Student()stu.items['Course'] = 'Python'stu.items['Teacher'] = '张三'print(len(stu))print(bool(stu))print(iter(stu))print(stu['Course'])stu['Course'] = 'HTML'print(stu['Course'])
__len__:定义当被 len() 调用时的行为(返回容器中元素的个数);__iter__:定义当迭代容器中的元素的行为;__getitem__:获取容器中的元素,相当于 self[key];__setitem__:设置容器中的元素,相当于 self[key] = value;__delitem__:删除容器中的某个元素,相当于 del self[key];__reversed__:定义当被 reversed() 调用时的行为;__contains__:定义当使用成员测试运算符(in 或 not in)时的行为;7.可调用对象
# 函数是可调用对象def add(): passadd.__call__()add()# 类实现了__call__方法class Add(): def __call__(self, *args, **kwargs): print(args) print(kwargs)add_instance = Add()add_instance.__call__(1,2,3, course='Python')add_instance(1,2,3,course='Python')
Python中,实现了call方法的对象都是可调用对象;__call__:允许一个类的实例像函数一样被调用:x(a, b)调用为 x.__call__(a, b);

参考:

标签: #python不等号 #魔术方法python