
python高级
文章平均质量分 89
"追风者"
这个作者很懒,什么都没留下…
展开
-
python全栈学习记录(二十)类的属性传递与绑定方法
类中的方法类可以直接调用,不过要给self参数传值,但是一般而言类的方法是绑定被对象使用的。当类的方法在实例中调用时,方法就会被绑定给实例,而方法中的self参数会被自动传值为实例的内存地址。如果想在实例化的过程中就给实例定制属性,可以使用__init__方法,__init__方法会在类实例化以后自动调用,负责初始化实例的属性,切记__init__方法不能有返回值。调用类的过程就是将类实例化的过程,调用类后拿到的返回值就是类的一个对象,也可以称之为类的一个实例。在程序中:必须先定义类,后调用类来产生对象。原创 2024-09-27 19:27:18 · 454 阅读 · 0 评论 -
python全栈学习记录(二十一)类的继承、派生、组合
上述代码中c.f1()首先会运行C中的f1代码,然后运行super().f1(),此刻调用super的类是C,mro表中以C的后一个类为起始向后寻找继承关系,找到A类的f1函数,再次运行super函数,再次在mro表中以A的后一个类为起始向后找,找到B类,运行B的f1函数。菱形继承的实现原理(新式类):图中的继承顺序为:首先按A的直接继承顺序找B这条路为B、E,到两条路相交的节点G后会跳转到下一条路C,再到下一条路D,找到D、F,当三条路全部找完以后再找节点G,之后再找F。原创 2024-10-03 22:03:21 · 1033 阅读 · 0 评论 -
python全栈学习记录(二十二)多态性、封装、绑定方法与非绑定方法
非绑定方法:类中定义的函数如果被装饰器@staticmethod装饰,那么该函数就变成非绑定方法,既不与类绑定,又不与对象绑定,意味着类与对象都可以来调用,但是无论谁来调用,都没有任何自动传值的效果,就是一个普通函数。python本身也是支持多态性的,len函数就是对多种容器类型封装的接口函数,所以使用len函数时只需要将容器的实例传入就可以得到容器的长度值。精髓在于:隔离了复杂度。由上面的例子我们可以知道多态性的本质就是在不同的类型中定义相同的方法,这样就可以不考虑具体的类型直接调用统一的方法了。原创 2024-10-04 20:54:54 · 689 阅读 · 0 评论 -
python全栈学习记录(二十三)反射、内置方法、类相关的函数、元类
元类中的__new__方法负责完成类产生的整个过程(拿到类名、确定基类(父类)、产生名称空间、用type产生类),并且这个过程是在类的定义阶段完成的,话句话说就是元类是在类的定义阶段被调用的。python的类内置了许多以__开头,以__结尾的方法,这些方法是在满足特定条件时自动触发的,如__init__的作用是初始化类的实例,会在类的实例创建完成以后自动触发。在python中一切皆对象,那么我们用class关键字定义的类本身也是一个对象,而负责产生该对象的类称之为元类,即元类可以简称为类的类。原创 2024-10-07 20:21:51 · 773 阅读 · 0 评论 -
python全栈学习记录(二十四)元类、异常处理
上述代码中当调用People(‘111’,222)时,触发元类的__call__方法,首先会调用People的__new__方法产生一个People类的新对象,由于People没有__new__方法,根据继承的机制解释器会去父类object中找,新对象产生后就需要根据People类的初始化方法完成对象的初始化,所以我们调用People的初始化方法并将新产生的obj对象传入完成初始化操作,最后返回这个obj对象也就完成了实例化的操作了。方法三:元类控制单例的产生。原创 2024-10-09 22:09:15 · 606 阅读 · 0 评论