python覆盖

1.关于python的覆盖

__cmp__

对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__():

class Student(object):

def __init__(self, name, score):

self.name = name

self.score = score

def __str__(self):

return '(%s: %s)' % (self.name, self.score)

__repr__ = __str__

def __cmp__(self, s):

if self.name < s.name:

return -1

elif self.name > s.name:

return 1

else:

return 0

上述 Student 类实现了__cmp__()方法,__cmp__用实例自身self和传入的实例 s 进行比较,如果 self 应该排在前面,就返回 -1,如果 s 应该排在前面,就返回1,如果两者相当,返回 0。

Student类实现了按name进行排序:

>>> L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 77)]

>>> print sorted(L)

[(Alice: 77), (Bob: 88), (Tim: 99)]

注意: 如果list不仅仅包含 Student 类,则 __cmp__ 可能会报错:

L = [Student('Tim', 99), Student('Bob', 88), 100, 'Hello']

print sorted(L)

请思考如何解决。

class Student(object):

def __init__(self, name, score):

self.name = name

self.score = score

def __str__(self):

return '(%s: %s)' % (self.name, self.score)

__repr__ = __str__

def __cmp__(self, s):

if(self.scorereturn 1

if(self.score>s.score):

return -1

if(self.score==s.score):

if(self.name>s.name):

return 1;

if(self.namereturn -1

return 0

L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]

print sorted(L)

2.关于python的覆盖

__cmp__对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__():class Student(object):def __init__(self, name, score):self.name = nameself.score = scoredef __str__(self):return '(%s: %s)' % (self.name, self.score)__repr__ = __str__def __cmp__(self, s):if self.name < s.name:return -1elif self.name > s.name:return 1else:return 0上述 Student 类实现了__cmp__()方法,__cmp__用实例自身self和传入的实例 s 进行比较,如果 self 应该排在前面,就返回 -1,如果 s 应该排在前面,就返回1,如果两者相当,返回 0。

Student类实现了按name进行排序:>>> L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 77)]>>> print sorted(L)[(Alice: 77), (Bob: 88), (Tim: 99)]注意: 如果list不仅仅包含 Student 类,则 __cmp__ 可能会报错:L = [Student('Tim', 99), Student('Bob', 88), 100, 'Hello']print sorted(L)请思考如何解决。class Student(object):def __init__(self, name, score):self.name = nameself.score = scoredef __str__(self):return '(%s: %s)' % (self.name, self.score)__repr__ = __str__def __cmp__(self, s):if(self.scorereturn 1if(self.score>s.score):return -1if(self.score==s.score):if(self.name>s.name):return 1;if(self.namereturn -1return 0L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]print sorted(L)。

3.python里def:是叫函数还是方法

可以这样讲,def定义了一个模块的变量,或者说是类的变量。它本身是一个函数对象。属于对象的函数,就是对象的属性。当然,你也可以叫它“方法”。

python 的函数和其他语言的函数有很大区别。它是可以被其他变量覆盖的,如:

def func():

print 1

print func() # 1

func = 5

print func # 5

pring func() # 错误!函数对象已经被覆盖了

在同一模块里,函数在未被定义前是不能使用的,因为它是在“运行时”定义的:

print func() # 错误!函数未定义

def func():

prnt 1

但如果定义函数的模块被其他模块包含,就不一样了

# mod1

def func1():

func2()

def func2():

print 1

# mod2

import mod1

mod1.func1() # 这是可以的,因为整个模块被导入,所有的定义已经执行了

4.python stringio 怎么写到文件里

StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以像操作磁盘文件那样来操作StringIO。

这篇文章主要介绍了Python StringIO模块,此模块主要用于在内存缓冲区中读写数据。模块中只有一个StringIO类,所以它的可用方法都在类中,此类中的大部分函数都与对文件的操作方法类似。

----------------------------------s=StringIO.StringIO([buf])此实例类似于open方法,不同的是它并不会在硬盘中生成文件,而只寄存在缓冲区;可选参数buf是一个str或unicode类型。它将会与其他后续写入的数据存放在一起(注意,若要在初始化数据之后继续写入数据,则在写入数据之前,应先将读写位置移动到结尾,然后再写入,否则,初始化数据会被覆盖掉,因为读写位置默认是0)。

StringIO类中的方法:s.read([n])参数n限定读取长度,int类型;缺省状态为从当前读写位置读取对象s中存储的所有数据。读取结束后,读写位置被移动。

----------------------s.readline([length])参数length限定读取的结束位置,int类型,缺省状态为None:从当前读写位置读取至下一个以“\n”为结束符的当前行。读写位置被移动。

----------------------s.readlines([sizehint])参数sizehint为int类型,缺省状态为读取所有行并作为列表返回,除此之外从当前读写位置读取至下一个以“\n”为结束符的当前行。读写位置被移动。

----------------------s.write(s)从读写位置将参数s写入给对象s。参数s为str或unicode类型。

读写位置被移动。----------------------s.writelines(list)从读写位置将list写入给对象s。

参数list为一个列表,列表的成员为str或unicode类型。读写位置被移动。

----------------------s.getvalue()此函数没有参数,无论读写位置在哪里,都能够返回对象s中的所有数据。----------------------s.truncate([size])1》有size参数无论读写位置在哪里,都从起始位置开始,裁剪size字节的数据。

2》不带size参数将当前读写位置之前的数据,裁剪下来。----------------------s.tell()返回当前读写位置。

----------------------s.seek(pos[,mode])移动当前读写位置至pos处,可选参数mode为0时将读写位置移动至pos处,为1时将读写位置从当前位置起向前或向后移动|pos|个长度,为2时将读写位置置于末尾处再向前或向后移动|pos|个长度;mode的默认值为0。----------------------s.close()释放缓冲区,执行此函数后,数据将被释放,也不可再进行操作。

----------------------s.isatty()此函数总是返回0。----------------------s.flush()刷新内部缓冲区。

----------------------实例1:[python] view plain copydef writedata(file, msg): file.write(msg) f = open(r'C:\Users\91135\Desktop\test.txt', 'w') writedata(f, "xxxxx!!!!") f.close() f = open(r'C:\Users\91135\Desktop\test.txt', 'r') print f.read() f.close() 实例2:[python] view plain copyimport StringIO def writedata(file, msg): file.write(msg) s = StringIO.StringIO('python') print s.tell()#读写位置默认是0,因此,之后写入的数据("xxxxx!!!xxxxxx")会将之前的数据('python')覆盖掉 writedata(s, "xxxxx!!!xxxxxx") print s.getvalue() 实例3:[python] view plain copyimport StringIO s = StringIO.StringIO('python') s.seek(0,2)#将读写位置移动到结尾 s.write("aaaa") lines = ['xxxxx', 'bbbbbbb'] s.writelines(lines) s.write("ttttttttt") print s.getvalue() #如果使用read方法获取其中的数据,必须通过seek先设置"文件指针"的位置。 s.seek(0,0)#使用s.read()来读取所有数据前,应将读写位置移动到开头 print s.read() print s.len 实例4:[python] view plain copyimport StringIO s = StringIO.StringIO("python") #读写位置默认是0,下面的语句在写入数据时,并没有移动读写位置,因此,之前的数据("python")会被覆盖掉。

s.write("hello python!") s.write('hello world!') s.seek(0) print s.read() s.seek(-4,2)#移动读写位置,以便读取最后4个字节 print s.read() 通过例子,我们看到了StringIO的行为,基本与file一致。StringIO提供了一个方法,无论读写位置在哪里,都可以方便的获取其中的数据:StringIO.getvalue()。

python标准模块中还提供了一个cStringIO模块,它的行为与StringIO基本一致,但运行效率方面比StringIO更好。但使用cStringIO模块时,有几个注意点:1. cStringIO.StringIO不能作为基类被继承;2. 创建cStringIO.StringIO对象时,如果初始化函数提供了初始化数据,新生成的对象是只读的。

所以下面的代码是错误的:[python] view plain copyimport cStringIO s = cStringIO.StringIO("python"); print s print type(s) print s.getvalue() s.write("OOOKKK");#AttributeError: 'cStringIO.StringI' object has no attribute 'write'。

python覆盖

转载请注明出处代码入门网 » python覆盖

资讯

pythoncoding

阅读(9)

本文主要为您介绍pythoncoding,内容包括python中#coding:gbk有什么用,Pythoncoding用,SublimeText与Pycharm哪个更好,怎么在python加入#/usr/bin/envpythoncoding=utf8。它是一种编码格式,简单说明是:文件说明指令来确定不同的环境进行不同的

资讯

python字符串删除字符

阅读(7)

本文主要为您介绍python字符串删除字符,内容包括python如何去除字符串中不想要的字符,Python如何删除字符串的最后3个字符,python怎么把字符串第一个字符去掉。问题:过滤用户输入中前后多余的空白字符 ++++abc123--- 过滤某windows下编辑文

资讯

python3get()

阅读(6)

本文主要为您介绍python3get(),内容包括python3requests.get获取不到完整的页面,求大佬指导,python3的requests.get都请求参数,python3.x中用cgi的get方式实现中文参数的的传递,但是总是出错,应。def openUrl(url):import urllib2url = htt

资讯

python格式化日期

阅读(6)

本文主要为您介绍python格式化日期,内容包括python,格式化时间实例,求,Python如何输出指定格式的日期,Python怎么格式化时间。对于像Wed, 11 Apr 2012 09:37:05 +0800的时间格式化可如下解:>>> date=Wed, 11 Apr 20

资讯

webkitpython

阅读(8)

本文主要为您介绍webkitpython,内容包括如何用Python开发一个简单的Webkit浏览器,如何用Python开发一个简单的Webkit浏览器,swiftpython学哪个。让我们从最简单的 PyQt 的 Webkit 用例开始吧:输入 url,打开窗口并在窗口中加载页面。这个例子

资讯

httppythonpost

阅读(7)

本文主要为您介绍httppythonpost,内容包括如何用Python写一个httppost请求,如何用Python写一个httppost请求,如何用Python写一个httppost请求。import requestss = requests.session()login_data = {email: ***, passw

资讯

pythonwebkit

阅读(6)

本文主要为您介绍pythonwebkit,内容包括如何用Python开发一个简单的Webkit浏览器,如何用Python开发一个简单的Webkit浏览器,如何用python解析网页并获得网页真实的源码。让我们从最简单的 PyQt 的 Webkit 用例开始吧:输入 url,打开窗口并在窗

资讯

centospython安装pip

阅读(5)

本文主要为您介绍centospython安装pip,内容包括如何在centos6.4上安装pip,如何在centos中安装pip,centos怎么安装pythonpip。之前有的朋友问我,CentOS版本怎么安装python的pip,我之前给出的Ubuntu下apt-get的方法ubuntu 需要先安装下

资讯

python指定目录

阅读(9)

本文主要为您介绍python指定目录,内容包括python中怎样转到指定目录,怎么用python在指定目录建一个文件,怎么在Python进入指定文件夹。例如使用IDLE编译python代码时,可以使用os.chdir转到指定目录import os.os.getcwd() #get cur

资讯

一个python程序

阅读(6)

本文主要为您介绍一个python程序,内容包括用python编写一个程序,如何用python运行一个程序,用python编写一个简单的程序。ic=float(input(请输入路程(单位为公里km):))sj=float(input(请输入等待时间(单位为分钟min):))t

资讯

学Python对java

阅读(9)

本文主要为您介绍学Python对java,内容包括JavaVSPython应该先学哪个,学Java还是学python好呢,Python和java学哪个好了。Java和python犹如北乔峰南慕容,竞争不相上下。如果有能力同时学习那再好不过了,但很多刚刚接触IT行业的小伙伴在学习初期

资讯

pythonsyspath

阅读(8)

本文主要为您介绍pythonsyspath,内容包括python的sys.path是从什么地方读取的,pythonsys.path从哪里,pythonsys.path默认值哪儿设置。sys模块包含了与Python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性

资讯

phprubyPython

阅读(8)

本文主要为您介绍phprubyPython,内容包括php和python和ruby,php、ruby和python哪种语言的学习周期短,php、ruby和python哪种语言的学习周期短。perl基本已经被淘汰,在各方面几乎已经没有优势,虽然说还正在开发perl6啊什么的,不过基本上大势已

资讯

python字符串格式化

阅读(9)

本文主要为您介绍python字符串格式化,内容包括关于python的字符串格式化,Python如何格式化输出字符串,python字符串格式化什么意思。在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形

资讯

pythoncoding

阅读(9)

本文主要为您介绍pythoncoding,内容包括python中#coding:gbk有什么用,Pythoncoding用,SublimeText与Pycharm哪个更好,怎么在python加入#/usr/bin/envpythoncoding=utf8。它是一种编码格式,简单说明是:文件说明指令来确定不同的环境进行不同的

资讯

python字符串删除字符

阅读(7)

本文主要为您介绍python字符串删除字符,内容包括python如何去除字符串中不想要的字符,Python如何删除字符串的最后3个字符,python怎么把字符串第一个字符去掉。问题:过滤用户输入中前后多余的空白字符 ++++abc123--- 过滤某windows下编辑文

资讯

python3get()

阅读(6)

本文主要为您介绍python3get(),内容包括python3requests.get获取不到完整的页面,求大佬指导,python3的requests.get都请求参数,python3.x中用cgi的get方式实现中文参数的的传递,但是总是出错,应。def openUrl(url):import urllib2url = htt

资讯

python格式化日期

阅读(6)

本文主要为您介绍python格式化日期,内容包括python,格式化时间实例,求,Python如何输出指定格式的日期,Python怎么格式化时间。对于像Wed, 11 Apr 2012 09:37:05 +0800的时间格式化可如下解:>>> date=Wed, 11 Apr 20

资讯

webkitpython

阅读(8)

本文主要为您介绍webkitpython,内容包括如何用Python开发一个简单的Webkit浏览器,如何用Python开发一个简单的Webkit浏览器,swiftpython学哪个。让我们从最简单的 PyQt 的 Webkit 用例开始吧:输入 url,打开窗口并在窗口中加载页面。这个例子

资讯

httppythonpost

阅读(7)

本文主要为您介绍httppythonpost,内容包括如何用Python写一个httppost请求,如何用Python写一个httppost请求,如何用Python写一个httppost请求。import requestss = requests.session()login_data = {email: ***, passw

资讯

pythonwebkit

阅读(6)

本文主要为您介绍pythonwebkit,内容包括如何用Python开发一个简单的Webkit浏览器,如何用Python开发一个简单的Webkit浏览器,如何用python解析网页并获得网页真实的源码。让我们从最简单的 PyQt 的 Webkit 用例开始吧:输入 url,打开窗口并在窗

资讯

pythontrue

阅读(5)

本文主要为您介绍pythontrue,内容包括true在Python里面的意思,在Python中怎么表达True,在Python中怎么表达True。为False的几种情况:1. 0为False,其他所有数值皆为True2. 空串("")为False,其他所有字符串皆为True3. 空

资讯

mac使用python

阅读(2)

本文主要为您介绍mac使用python,内容包括怎么在mac上使用python,mac怎么运行python,有用mac学习/使用python的吗。如果要使用 Python 2 来运行此文件,因为 OS X 自带 Python 2,所以直接输入1搜索python "python"文件

资讯

python引用函数

阅读(2)

本文主要为您介绍python引用函数,内容包括python怎么调用函数,python怎么调用函数中的函数,python的调用函数怎么用。如果你用C给Matlab写过MEX程序,那么这个问题是很容易理解的(好像每次讨论Python问题时我总是把Matlab搬了出来…… 《在

资讯

python%d%s

阅读(2)

本文主要为您介绍python%d%s,内容包括Python编程里面"%s和%d"都是什么意思呀,Python里的"%s和%d"都是什么意思,小白学python的问题关于%d和%s的区别。%s表示格化式一个对象为字符。%d表示整数。拓展资料:refactoring的基本方法就是每一步小小变

资讯

pythonlist(range)

阅读(2)

本文主要为您介绍pythonlist(range),内容包括如何利用python语言中list和range结合起来使用,PythonPython语句list(range(1,10,3))执行结果为([1,4,7],如何结合python中的List和range生成列表元素。方法/步骤第一步,range()函数添加一个参数,如

资讯

python空对象

阅读(2)

本文主要为您介绍python空对象,内容包括python空值用什么表示,如何判断pythonobjects.get对象为空,Python中None和&#39;空字符串的区别。1.首先要了解Pythond的对象的概念:Python中,万物皆对象,所有的操作都是针对对象的,那什么是对象,5是一个in

资讯

c语言调用python

阅读(2)

本文主要为您介绍c语言调用python,内容包括C语言程序如何调用python程序,C语言程序如何调用python程序,如何在C语言中调用python函数。下面是一个例子:首先是python的一个简单函数class Hell

资讯

python函数套函数

阅读(2)

本文主要为您介绍python函数套函数,内容包括Python中什么是闭包,python返回函数有什么用为什么要套一层函数再返回,python一个函数怎么使用另一个函数内的变量。闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的

资讯

python2.7ubuntu

阅读(2)

本文主要为您介绍python2.7ubuntu,内容包括如何在ubuntu上安装python2.7,ubuntu怎么安装python2.7.6的版本,ubuntu怎么安装python2.7.6的版本。python Python 2.7.11+ (default, Apr 17 2016, 14:00:29) [GCC 5.3.1 20

资讯

python转换utf8

阅读(2)

本文主要为您介绍python转换utf8,内容包括python如何将字符串转化为utf8什么样子,python中unicode编码怎么转换为utf8,有个文件是python的,数据不知道是什么,有办法转成UTF8么搜狗问。实现代码如下:a = abce# print type(a)b = a.decode("asc

资讯

python替换字符串中的

阅读(2)

本文主要为您介绍python替换字符串中的,内容包括python中怎么替换字符串,python中如何替换字符串中的"\\"符号,Python如何替换字符串里的第N个字符。Python替换某个文本中的字符串,然后生成新的文本文档,代码如下:import osos.chdir(D:\\) #