python实例

Python多态

岁酱吖の 提交于 2020-03-07 20:55:14
1.多态 其他语言中所谓的多态,至的是一个方法多种实现,在继承前提下,父类规定了子类的接口,使得可以相同的方式调用子类的方法,但会获得不同的功能 Python崇尚的是"鸭子类型(Duck typing)",这个词概念名字来源于由James Whitcomb Riley提出的鸭子测试,"鸭子测试"可以这样表述:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来像鸭子、那么这只鸟可以被称为鸭子”。’'鸭子类型”中不关心对象的类型,只关心对象的行为。 鸭子类型是动态类型的一种风格,在这种风格中,一个对象有效的语义,不是由继承自特定类或实现特定的接口,二十由“当前方法和属性的集合”决定。 2.算数运算符重载 class MyInt ( object ) : def __init__ ( self , num ) : if isinstance ( num , int ) : self . num = num else : raise Exception ( "类型错误" ) # 本类的加法运算符重载 + def __add__ ( self , other ) : # 两个同类型的对象相加,返回一个新的同类对象 # return self.num + other.num #error return MyInt ( self . num + other . num ) # += a += b

需求驱动学习之Python(如何编写Python脚本替换文件中的多行字符?)

放肆的年华 提交于 2020-03-07 12:29:00
当一个人太执着于某一个东西的时候, 会错过很多美好的东西! Python值得学习的一个工具,不要局限在当前使用的语言中。 在大概3个月之前,Python对我来说一直是个迷。然而,就在3个月前我经理给我一个任务——删除(替换)所有项目源码文件中包含特定几行内容的所有注释。整个项目源码的大小有1G,在Linux服务器(中高档)上编译需要半个多小时,可见代码量之大,不可能手动去一个一个改。肯定得用脚本去处理,于是我想到了Python。在这之前没有接触过Python,花了2个星期一顿恶补之后,总算顺利交差了。 一直很想和大家分享一下碰到的问题及我如何解决的(可能我的方案并不好,但是他能够解决我的问题),但一直拖到现在是因为我感觉我还对Python的了解还不够。因为要在短时间内完成上面交下来的任务,在学习Python的时候,都是走马观花,对解决自己的问题不相关的直接跳过,看资料也静不下心,脑海里都是问题。前几天我静下心把Python的书从头到尾浏览了一遍,感觉现在是时候要进行总结了。 本文的主要内容如下: 问题描述 解题思路 代码实现 Python的特点 1、问题描述 项目源码很大,属于C/C++混合的那种,编程风格也很多样,有'.c'、'.cc'、'cpp'、'.h'、'.hh'等文件。我要完成的任务是:把包含特定几行内容的注释删掉,如(声明:下面的内容只是我随便举的一个例子

python算术运算符重载、迭代器、call魔术方法和单例设计模式

风流意气都作罢 提交于 2020-03-07 03:41:42
1.算术运算符重载 我们知道在python中有字符串的相加、数字常量的相加,那么对于我们自定义的类实例化后的对象是否可以进行相加呢?答案是可以的。这里就要我们对于算术运算符进行重载。下面我们以__add__和__iadd__重载为例,讲解算术运算符的重载。 1.1.__add__ __add__是用来定义加法的魔术方法。 我们来看下面的例子, class Dog : def __init__ ( self , amount , name ) : self . amount = amount self . name = name def __add__ ( self , other ) : # 定义两个类相加的结果,other为其他类 return Dog ( self . amount + other . amount , self . name ) # 返回一个新类 d1 = Dog ( 23 , "Tom" ) d2 = Dog ( 21 , "Jerry" ) res = d1 + d2 # 等价于 d1.__add__(d2) 等价于 __add__(d1, d2) print ( res ) print ( res . amount ) print ( res . name ) print ( type ( res ) ) 执行结果如下, < __main__ . Dog

Python面向对象编程 - 4

断了今生、忘了曾经 提交于 2020-03-06 22:27:39
特殊成员和魔法方法 Python中有大量类似__doc__这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一! __init__ : 构造函数,在生成对象时调用 __del__ : 析构函数,释放对象时使用 __repr__ : 打印,转换 __setitem__ : 按照索引赋值 __getitem__: 按照索引获取值 __len__: 获得长度 __cmp__: 比较运算 __call__: 调用 __add__: 加运算 __sub__: 减运算 __mul__: 乘运算 __div__: 除运算 __mod__: 求余运算 __pow__: 幂 1.__doc__ 说明性文档和信息。Python自建,无需自定义。 class Foo: """ 描述类信息,可被自动收集 """ def func(self): pass # 打印类的说明文档 print(Foo.__doc__) 2.__init__() 实例化方法,通过类创建实例时,自动触发执行。 class Foo: def __init__(self, name): self.name = name self.age = 18 obj = Foo(jack') # 自动执行类中的 __init__ 方法 3.__module__和__class__ _

python学习笔记之列表(list)与元组(tuple)详解

ε祈祈猫儿з 提交于 2020-03-06 09:07:40
List(列表)是Python中使用最频繁的数据类型,而元组是另一个数据类型,类似于List(列表)。这篇文章主要给大家介绍了python学习笔记之列表(list)与元组(tuple)的相关资料,文中不仅详细介绍了两者的使用,还分享了list和tuple的相互转换的方法,需要的朋友可以参考下 前言 最近重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧——我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记忆。 现在读到了列表(list)、元组(tuple)、集合(set)和字典(dict)四种在python内置的重要的数据结构。我只是想记录一下列表(list)和元组(tuple)比较容易搞混的地方和阐述一遍列表(list)和元组(tuple)比较常用的一些方法。 列表(list)与元组(tuple) 首先,对于列表(list)和元组(tuple)的概念有一个清楚的了解,清楚列表(list)是一个可变的序列,而元组(tuple)是一个不可变的序列。两种数据结构都是python内置的数据类型,使用非常方便。 对于这两种常用的数据类型是怎么样定义的吧。定义一个对象时使用列表(list)和元组(tuple)方法的必要工作。 >> > a_list = [ ] >> > a_list [ ] >> > a

python中多重继承与获取对象

怎甘沉沦 提交于 2020-03-06 06:46:29
1、python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。 多重继承的继承链就不是一棵树了,它像这样: class A(object): def __init__(self, a): print 'init A...' self.a = a class B(A): def __init__(self, a): super(B, self).__init__(a) print 'init B...' class C(A): def __init__(self, a): super(C, self).__init__(a) print 'init C...' class D(B, C): def __init__(self, a): super(D, self).__init__(a) print 'init D...' 看下图: 像这样,D 同时继承自 B 和 C,也就是 D 拥有了 A、B、C 的全部功能。多重继承通过 super()调用__init__()方法时,A 虽然被继承了两次,但__init__()只调用一次: >>> d = D('d') init A... init C... init B... init D... 多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。 举个例子

django基础篇

一笑奈何 提交于 2020-03-06 06:45:19
Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。 一、基本的配置 1、创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令:   python manage.py runserver 0.0.0.0   python manage.py startapp appname   python manage.py syncdb   python manage.py makemigrations   python manage.py migrate   python manage.py createsuperuser 2、程序目录 3、配置文件 数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbname', 'USER': 'root', 'PASSWORD': 'xxx', 'HOST': '', 'PORT': '', } } # 由于Django内部连接MySQL时使用的是MySQLdb模块

Python JSON

我与影子孤独终老i 提交于 2020-03-06 05:48:45
使用python语言来编码和解码json对象 json(JavaScript Object Notation)是一种请量级的数据交换格式。 使用json函数需要导入json库:import json json.dumps:将python对象编码成json字符串 json.loads:将已编码的json字符串解码为python对象 实例一:将数组编码成JSON格式的数据 执行代码的结果如下: python 原始类型向json类型的转化对照表: json.loads用于解码json数据。该函数返回python字段的数据类型 实例二:python解码json对象 执行代码的结果如下: 采用Demjson(第三方库) Demjson是python的第三方模块库,可用于编码和解码json数据,包含了jsonLint的格式化及校验功能。 GitHub地址:https://github.com/dmeranda/demjson 官方地址:http://deron.meranda.us/python/demjson 环境配置 使用demjson编码和解码json数据前,需安装demjson模块 下载demjson安装包 解压安装包:unzip demjson-master.zip 安装:python setup.py install 验证是否安装成功 json函数 encode()函数

Pthon实例二:Python蟒蛇绘制

北城余情 提交于 2020-03-06 05:39:40
注意 本文中的题目均摘自 Python123 平台 实例二:Python蟒蛇绘制 使用turtle库,绘制一个蟒蛇形状的图形。 输出效果如下: #PythonDraw.py import turtle turtle . setup ( 650 , 350 , 200 , 200 ) turtle . penup ( ) turtle . fd ( - 250 ) turtle . pendown ( ) turtle . pensize ( 25 ) turtle . pencolor ( "purple" ) turtle . seth ( - 40 ) for i in range ( 4 ) : turtle . circle ( 40 , 80 ) turtle . circle ( - 40 , 80 ) turtle . circle ( 40 , 80 / 2 ) turtle . fd ( 40 ) turtle . circle ( 16 , 180 ) turtle . fd ( 40 * 2 / 3 ) turtle . done ( ) 涉及知识点: 1、库的引用与import 2、turtle库的主要函数 具体见学习笔记二: Python学习笔记(二) 延伸练习题 1、turtle叠边形绘制 使用turtle库,绘制一个叠边形,其中,叠边形内角为100度。

[python学习篇][书籍学习][python standrad library][内建函数]之[all,any,basestring,isinstance,bin,bool,@classmethod,@staticmethod,cmp,enumerate

若如初见. 提交于 2020-03-06 04:41:10
Python 解释器内置了一些函数,它们总是可用的。 这里将它们按字母表顺序列出。 Built-in Functions abs() divmod() input() open() staticmethod() all() enumerate() int() ord() str() any() eval() isinstance() pow() sum() basestring() execfile() issubclass() print() super() bin() file() iter() property() tuple() bool() filter() len() range() type() bytearray() float() list() raw_input() unichr() callable() format() locals() reduce() unicode() chr() frozenset() long() reload() vars() classmethod() getattr() map() repr() xrange() cmp() globals() max() reversed() zip() compile() hasattr() memoryview() round() __import__() complex() hash(