背景 最近有一个需求需要自定义一个多继承abc.ABC与django.contrib.admin.ModelAdmin两个父类的抽象子类,方便不同模块复用大部分代码,同时强制必须实现所有抽象方法,没想按想当然的写法实现多继承时,居然报错metaclass conflict: In [1]: import abc In [2]: from django.contrib import admin In [3]: class MyAdmin(abc.ABC, admin.ModelAdmin): ..…
python多重继承的MRO算法选择: 经典方式.Python2.2 新式算法.Python2.3 新式算法(C3).Python 3中只保留了最后一种,即C3算法 C3算法的解析: 1.多继承UML图:   备注:O==object 2.python-C3算法解析: #C3 定义引用开始 C3 算法:MRO是一个有序列表L,在类被创建时就计算出来. L(Child(Base1,Base2)) = [ Child + merge( L(Base1) ,  L(Base2) ,  Base1Bas…
继承是面向对象编程的一个重要的方式,通过继承,子类就可以扩展父类的功能.在python中一个类能继承自不止一个父类,这叫做python的多重继承(Multiple Inheritance ). 语法 class SubclassName(BaseClass1, BaseClass2, BaseClass3, ...): pass 菱形继承 在多层继承和多继承同时使用的情况下,就会出现复杂的继承关系,多重多继承. 其中,就会出现菱形继承.如下图所示. 在这种结构中,在调用顺序上就出现了疑惑,调用顺…
Python描述符以及Property方法的实现原理 描述符的定义: 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议 __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发 描述符作用: 描述符的作用是用来代理另外一个类的属性的(必须把描述符定义成这个类的类属性,不能定义到构造函数中) 可以说成是属性的…
Python获取时光网电影数据 一.前言 有时候觉得电影真是人类有史以来最伟大的发明,我喜欢看电影,看电影可以让我们增长见闻,学习知识.从某种角度上而言,电影凭借自身独有的魅力大大延长了人类的"寿命". 一部电影如同一本故事书,我可以沉迷到其中,来的一个新的世界,跟着电影主角去经历去感悟.而好的电影是需要慢慢品尝的,不仅提供了各种视觉刺激和情感体验,更能带来思考点,也让我可以懂得在现实生活中穷尽一生也无法明白的道理.电影比书本更直接.更有趣.更精彩. 好的电影可以在潜移默化中塑造我们的…
python自动化测试(2) 自动化基本技术原理 1   概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领可不是容易的事情,必须要有扎实的计算机理论基础,才能看到深层次的本质东西. 2   应用软件逻辑结构 数据库应用系统 可能是最典型的网络应用程序了,关于它的软件架构如下: 一般在逻辑上分为4层: 用户界面层 UI 为终端用户提供交互的人机界面 业务逻辑层 BLL 将数据库抽象出来的对象进行拼接成具体…
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这首先站点固定的名称固定的站点名称长度可知道,这不是符合列表嘛[第一站,第二站,...,最后一站] 把这写站名放入列表中一个for循环自动帮你取每个站名 你可以加入time.sleep来设置每个站的之间的时间, 过长江隧道的时间可以单独加个if判断站名改变默认时间就行,这里还可以通过站名判断是否需要转…
装python package 时,conda提示会升级python2到python3, 那可能是你的windows不支持py2env下的此包.比如:win 下,tensorflow就不支持py2的环境.你要装tf就必须升级python2 到 python3. 而代码又是用python2 写的,就出这问题了.…
使用sys模块 使用sys模块里的argv参数,用来保存参数值 import sys #sys.argv的作用是获取到运行python文件时,传入的参数 #默认如果运行python文件不传参数,argv里面只有一个参数,就是当前这个文件的文件名 import flask server=flask.Flask(__name__) @server.route('/') def index(): return 'ok' if len(sys.argv)>1: port=sys.argv[1] if p…
今天ytkah在运行python文件时出现错误,提示如下,很明显这是没有定义python文件编码引起的问题,那么要怎么解决呢?很简单,在文件头部定义一下就可以了. File "hello.py", line 6 SyntaxError: Non-UTF-8 code starting with '\xb5' in file hello.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0…