python实例

Python面向对象反射,双下方法

情到浓时终转凉″ 提交于 2020-04-02 23:30:34
一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 对实例化对象的示例 class Foo: f = '类的静态变量' def __init__(self,name,age): self.name=name self.age=age def say_hi(self): print('hi,%s'%self.name) obj=Foo('egon',73) #检测是否含有某属性 print(hasattr(obj,'name')) print(hasattr(obj,'say_hi')) #获取属性 n=getattr(obj,'name') print(n) func=getattr(obj,'say_hi') func() print(getattr(obj,'aaaaaaaa','不存在啊')) #报错 #设置属性 setattr(obj,'sb',True) setattr

python字符串(大小写、判断、查找、分割、拼接、裁剪、替换、格式化)

ぃ、小莉子 提交于 2020-04-02 18:54:02
一、通用操作 1、Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。 语法 len()方法语法: len( q ) 参数 q -- 对象。 返回值 返回对象长度。 实例 以下实例展示了 len() 的使用方法: >>>str = "runoob" >>> len(str) # 字符串长度 6 >>> l = [1,2,3,4,5] >>> len(l) # 列表元素个数 5 2、python 成员运算符 in 和 not in Python成员运算符测试给定值是否为序列中的成员,例如字符串,列表或元组。 有两个成员运算符,如下所述 - in 如果在指定的序列中找到一个变量的值,则返回true,否则返回false。 not in 如果在指定序列中找不到变量的值,则返回true,否则返回false。 in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 以下实例演示了Python所有成员运算符的操作: #!/usr/bin/python3 a = 10 b = 20 list = [1, 2, 3, 4, 5 ]; if ( a

python面向对象编程

泪湿孤枕 提交于 2020-04-02 09:32:34
一,什么是面向对象编程 面向对象的程序设计的核心是对象 面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。 二,类和对象 python中一切皆为对象,数据类型的本质就是类。 在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是‘类’,对象是则是这一类事物中具体的一个。 声明类: ''' class 类名: '类的文档字符串' 类体 ''' 类有两种作用:属性引用和实例化 属性引用(类名.属性) class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def walk(self): #人都可以走路,也就是有一个走路方法 print("person is walking...") print(Person.role) #查看人的role属性 print(Person.walk) #引用人的走路方法,注意,这里不是在调用 实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征 class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def __init__(self,name): self.name = name

python之旅:元类metaclass

烈酒焚心 提交于 2020-04-02 05:53:08
廖老师元类:http://www.cnblogs.com/moyand/p/8868857.html 一 知识储备 exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为locals() #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' global x,z x=100 z=200 m=300 ''',g,l) print(g) #{'x': 100, 'y': 2,'z':200,......} print(l) #{'m': 300} exec的使用 二 引子(类也是对象) class Foo: pass f1=Foo() #f1是通过Foo类实例化的对象 python中一切皆是对象,类本身也是一个对象,当使用关键字class的时候,python解释器在加载class的时候就会创建一个对象(这里的对象指的是类而非类的实例),因而我们可以将类当作一个对象去使用,同样满足第一类对象的概念,可以: 把类赋值给一个变量 把类作为函数参数进行传递 把类作为函数的返回值 在运行时动态地创建类 上例可以看出f1是由Foo这个类产生的对象,而Foo本身也是对象

面向对象的进阶(组合和继承)

感情迁移 提交于 2020-04-01 03:22:27
初始面向对象之后,我们来学习面向对象的三大特性以及面向对象的其他补充方面的知识。 组合 组合只有一个例子因为组合只作为上一章的补充内容 #老师 课程 生日 class Course: def __init__(self,name,period,price): self.name = name self.period = period self.price = price class Birth: def __init__(self,year,month,day): self.year = year self.month = month self.day = day class Teacher: def __init__(self,name,salary,boy_friend,python): self.name = name self.salary = salary self.bf = boy_friend self.course = python python = Course('python','6 months',20000) egg = Teacher('egon',200,'yuan',python) print(egg.bf) print(egg.name) print(egg.course.name) egg_birth = Birth(1965,2,2) print

python基础学习笔记(十)

会有一股神秘感。 提交于 2020-04-01 02:09:16
魔法方法、属性 ------------------------ 准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始。 class NewType(Object):   mor_code_here class OldType:   mor_code_here 在这个两个类中NewType是新类,OldType是属于旧类,如果前面加上 _metaclass_=type ,那么两个类都属于新类。 构造方法 构造方法与其的方法不一样,当一个对象被创建会立即调用构造方法。创建一个python的构造方法很简答,只要把init方法,从简单的init方法,转换成魔法版本的_init_方法就可以了。 class FooBar: def __init__(self): self.somevar = 42 >>> f =FooBar() >>> f.somevar 42 重写一个一般方法 每一个类都可能拥有一个或多个超类(父类),它们从超类那里继承行为方法。 class A: def hello(self): print 'hello . I am A.' class B(A):   pass >>> a = A() >>> b = B() >>> a.hello() hello . I am A. 因为B类没有hello方法,B类继承了A类,所以会调用A

Python--初识面向对象

↘锁芯ラ 提交于 2020-03-30 21:24:08
1.初识面向对象class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def __init__(self,name): self.name = name # 每一个角色都有自己的昵称; def walk(self): #人都可以走路,也就是有一个走路方法 print("person is walking...")print(Person.role) #查看人的role属性print(Person.walk) #引用人的走路方法,注意,这里不是在调用实例化的过程就是类——>对象的过程语法:对象名 = 类名(参数)2.创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性而类有两种属性:静态属性和动态属性静态属性就是直接在类中定义的变量动态属性就是定义在类中的方法创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性3.面向对象的三大特性:继承,多态,封装Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先封装:封装属性方法抽象类,接口类. 抽象类就是一种规范. from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): # 抽象类 接口类 规范和约束

Python实现Wordcloud生成词云图的示例

主宰稳场 提交于 2020-03-30 16:22:23
wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概。 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前,首先要做一些准备工作 1.安装结巴分词库 pip install jieba Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型。 下面我来简单介绍一下结巴分词的用法 结巴分词的分词模式分为三种: (1)全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题 (2)精确模式:将句子最精确地切开,适合文本分析 (3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词 下面用一个简单的例子来看一下三种模式的分词区别: import jieba # 全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题 text = "哈利波特是一常优秀的文学作品" seg_list = jieba.cut(text, cut_all=True) print(u"[全模式]: ", "/ ".join(seg_list)) # 精确模式:将句子最精确地切开,适合文本分析 seg_list = jieba.cut(text, cut_all=False) print(u"

python面试1-30题

泪湿孤枕 提交于 2020-03-30 06:25:17
1、一行代码实现1--100之和 利用sum()函数求和 2、如何在一个函数内部修改全局变量 利用global 修改全局变量 3、列出5个python标准库 os:提供了不少与操作系统相关联的函数 sys: 通常用于命令行参数 re: 正则匹配 math: 数学运算 datetime:处理日期时间 4、字典如何删除键和合并两个字典 del和update方法 5、谈下python的GIL GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。 多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大 6、python实现列表去重的方法 先通过集合去重,在转列表 7、fun(*args,**kwargs)中的*args,**kwargs什么意思? 8、python2和python3的range(100)的区别 python2返回列表,python3返回迭代器,节约内存 9、一句话解释什么样的语言能够用装饰器?

python ==> Django框架

给你一囗甜甜゛ 提交于 2020-03-30 03:24:51
python 之 Django 框架 本节内容 1.web 框架 2.mvc和mtv模式 3.django流程和命令 4.django URL 5.django views 6.django temple 7.django models 8.django admin 1.web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。 Web应用的流程: //浏览器发送一个HTTP请求; //服务器收到请求,生成一个HTML文档; //服务器把HTML文档作为HTTP响应的Body发送给浏览器; //浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。   import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n".encode("utf8")) client.send("<h1 style='color:red'>Hello, world</h1>".encode("utf8")) def main()