再看属性查找

再看属性查找

结合python继承的实现原理+元类重新看属性的查找应该是什么样子呢???

属性查找的原则:对象-》类-》父类

切记:父类 不是 元类

在学习完元类后,其实我们用class自定义的类也全都是对象(包括object类本身也是元类type的 一个实例,可以用type(object)查看),

我们学习过继承的实现原理,如果把类当成对象去看,将下述继承应该说成是:对象StanfordTeacher继承对象Foo,对象Foo继承对象Bar,对象Bar继承对象object

class Mymeta(type):    n=444

    def __call__(self, *args, **kwargs): #self=<class ‘__main__.StanfordTeacher‘>        obj=self.__new__(self) # StanfordTeacher.__new__        # obj=object.__new__(self)        print(self.__new__ is object.__new__) #True        self.__init__(obj,*args,**kwargs)        return obj

class Bar(object):    # n=333

    # def __new__(cls, *args, **kwargs):    #     print(‘Bar.__new__‘)    pass

class Foo(Bar):    # n=222

    # def __new__(cls, *args, **kwargs):    #     print(‘Foo.__new__‘)    pass

class StanfordTeacher(Foo,metaclass=Mymeta):    # n=111

    def __init__(self,name,age):        self.name=name        self.age=age### obj=StanfordTeacher(‘lili‘,18)# print(obj.__dict__)# print(obj.n)print(StanfordTeacher.n)
于是属性查找应该分成两层,一层是对象层(基于c3算法的MRO)的查找,另外一个层则是类层(即元类层)的查找

对象发起的属性查找:找到object 停止查找类发起的属性查找:object没找到会继续寻找元类

原文地址:https://www.cnblogs.com/h1227/p/12706628.html

时间: 2024-10-29 11:31:14

再看属性查找的相关文章

再看《JavaScript高级程序设计》第13、14、17、20-25章

第十三章 事件 1.事件流:描述的是从页面中接收事件的顺序 1)事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点 2)事件捕获:事件开始时由不太具体的节点接收,然后逐级向下传播到最具体的元素 3)DOM事件流:经历三个阶段——事件捕获阶段.处于目标阶段和事件冒泡阶段 2.事件处理程序:事件是用户或浏览器自身执行的某种动作,响应某个事件的函数就是事件处理程序 1)HTML事件处理程序:将事件处理程序设置为 null 就可以删除该事件处理程序. 2)DOM0级事件处理程序:

再看数据库——(2)视图

概念 *是从用户使用数据库的观点来说的. *从一个或多个表(视图)中导出来的 *一个虚表,或者说查询表 为什么要用视图呢? 一是简单,看到的就是需要的.视图不仅可以简化用户对数据的理解,也可以简化他们的操作.那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件. 二是 安全,通过视图用户只能查询和修改他们所能见到的数据,但不能授权到数据库特定行和特定的列上.通过视图,用户可以被限制在数据的不同子集上:使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后

再看ftp上传文件

前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在本地测试程序上传到ftp服务器一点问题都没有,奇怪的是当发布Web和ftp到同一个IIS下,上传文件时程序直接卡死,然后页面卡死,后来我又发现把Web和ftp分开发布在两台机器上问题又得到解决,所以当时放弃了这个方案. 再看ftp上传文件 前几天偶然看到Wolfy写到一个项目总结,其中提到了用Ser

python属性查找(attribute lookup)

在Python中,属性查找(attribute lookup)是比较复杂的,特别是涉及到描述符descriptor的时候. 在上一文章末尾,给出了一段代码,就涉及到descriptor与attribute lookup的问题.而get系列函数(__get__, __getattr__, __getattribute__) 也很容易搞晕,本文就这些问题简单总结一下. 首先,我们知道: python中一切都是对象,"everything is object",包括类,类的实例,数字,模块

再看Ajax

再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- 1.1 必备知识点 1.2 send()方法 1.3  再看CORS --2.HTTP请求和响应---------------- 2.1 Request Header中的参数 2.2 Response Header中的参数 2.3 GET请求和POST请求的区别 --3.jQuery中的Ajax-

python属性查找 深入理解(attribute lookup)

在Python中,属性查找(attribute lookup)是比较复杂的,特别是涉及到描述符descriptor的时候. 在上一文章末尾,给出了一段代码,就涉及到descriptor与attribute lookup的问题.而get系列函数(__get__, __getattr__, __getattribute__) 也很容易搞晕,本文就这些问题简单总结一下. 首先,我们知道: python中一切都是对象,"everything is object",包括类,类的实例,数字,模块

闲话js前端框架(5)——再看自己一年前设计的微型渲染引擎

闲话js前端框架 前端人员=美工+设计+代码+测试 --题记 专题文章: 一.从avalonjs的模板说起 二.庞大的angularjs 三.再也不想碰DOM 四.组件化?有没有后端的事? 五.再看自己一年前设计的微型渲染引擎 六.在浏览器标准上做文章 七.抛开浏览器,构建应用容器 八.为何Flash.银光和Java都在网页端一蹶不振 本文属 西风逍遥游 原创, 转载请注明出处: 西风世界 http://blog.csdn.net/xfxyy_sxfancy 五.再看自己一年前设计的微型渲染引擎

再看Cassandra 之NOSQL 数据库

Cassandra或许不会因为是NoSQL而得到关注,但是它在完成某些特定工作上,有迷人的魅力,这Netflix和Instagram两家公司一定知道. 过去的这些年,NoSQL的参与者,例如MongoDB已经得到了快速发展,受到了非常多的关注,但是 Apache Cassandra的光环褪去,作为创造了Cassandra的Facebook已经放弃了它,Cassandra的社区也好像过时了快.但 是Cassandra的命运迎来的转机,Netflix近来决心把他们自己的数据中心的oracle改成Ca

再看 AspriseOCR - OCR应用开发 -20151124

再看 AspriseOCR - OCR应用开发 我写这个博文时间为 2015/11/24日,注意时间因为,网上很多文章时间上很久远,有的已经不能参考了 很多人面对从图片中识别文字或者数字0~9  A~Z 的时候都想网上查找相关的技术文章 我也找了很多,但是很可惜没有找到多少有价值的信息 大部分的信息都很老旧而且有关 AspriseOCR 的不少 尤其关于DELPHI + AspriseOCR 的更少 我从网上找到了  AspriseOCR 破解的文件 , 并且已经打包在我的上传资料上,你们可以去