(第十篇) __enter__、__exit__
摘要:摘要: __enter__()和__exit__()是Python中的上下文管理器方法,主要用于对资源进行管理,比如文件、网络连接等。在使用with语句时,会自动调用这两个方法,即__enter__()在进入with代码块之前被调用,__exit__()在离开with代码块后被调用,可以确保资源在使
阅读全文
(第九篇) 见python分类
摘要:https://www.cnblogs.com/hechengQAQ/p/17272514.html
阅读全文
(第八篇)__format__、__hash__、__init_subclass__、__reduce_ex__、__reduce__、__sizeof__、__setstate__、__getstate__
摘要:一、__format__(self, format_spec) 当我们使用format()方法对一个对象进行格式化时,如果这个对象有__format__方法,那么这个方法就会被调用。它接受一个变量作为参数,并返回一个格式化后的字符串。 class Person: def __init__(self,
阅读全文
(第七篇)__setattr__、__geattr__、__delattr__、__getattribute__(对象属性访问控制)
摘要:摘要:在对象的创建和使用期间自动调用。这些特殊方法可以用于实现类似于属性访问、属性删除、属性赋值和属性访问前的特殊行为。 一、__setattr__ 用于在属性赋值时被自动调用,并将该属性名和属性值存储在实例字典中。该方法可以用来检查属性值的合法性,也可以用来实现属性赋值时的复杂逻辑 class M
阅读全文
(第六篇)__iter__、__next__及for循环执行原理(可迭代对象、迭代器、生成器)
摘要:摘要:只要有__iter__,那么这个对象就是可迭代对象,若对象有__iter__和__next__两种方法,则这个对象为迭代器对象。 一、概念 什么是迭代? 迭代就是重复,但是每一次重复都与上一次有关联,这就是迭代。 """ 这不是迭代,这是简单的重复 """ while True: print(
阅读全文
(第五篇)富比较__gt__、__ge__、__lt__、__le__、__eq__、__ne__
摘要:摘要:这些方法被称为“富比较”方法,是因为它们可以用于实现同类对象进行“比较”。这些方法的触发机制是在实例对象之间进行比较时自动调用。例如,如果有两个实例对象a和b,当执行a < b时,Python会自动查找a的类定义中是否实现了__lt__方法,如果有,则调用该方法进行比较。 一、__gt__、_
阅读全文
(第四篇)__str__和__repr__
摘要:一、工作原理和区别 __str__返回一个字符串,表示对象的可读性好的字符串,在打印对象时被调用(触发),可通过内置函数str(类对象)和print(类对象)触发。 __repr__也返回一个字符串,表示对象的代码形式,它在交互式环境和调试器中使用,并且可以通过内置函数 repr() 调用(触发)。
阅读全文
(第三篇)__new__和__init__、__del__
摘要:一、区别和联系 __new__是构造函数,在创建实例化对象时调用(触发),有一个必要的cls参数,代表当前类,__new__必须要有返回值。 __init__是初始化函数,在创建实例化对象后调用(触发),有一个必要的self参数,代表当前实例对象,__init__不需要有返回值。 总之,两者都在创建
阅读全文
(第二篇)__getitem__、__getitem__、__delitem__、__len__
摘要:在Python中,可以通过重写魔法方法__getitem__、__setitem__、__delitem__来实现创建类似于序列和映射的类,这些魔法方法可以让我们实现像list、tuple、dict等内建类型的访问。 一、工作原理: 当我们对类的属性item进行下标操作时,会被__getitem__
阅读全文
(第一篇)__mro__和__dict__
摘要:# __mro__ 查找继承顺序class A(object): passclass B(A): passclass C(object): passclass D(B, C): passprint(D.__mro__) # (<class '__main__.D'>, <class '__main_
阅读全文