python学习笔记(四)
1) 类。 python类的方法需要传self作为参数。(self是习惯性的约定,并不是强制的)。python的构造函数名叫作__init__(),而在实例化python的时候,并不需要使用new关键字(@_@太奇怪了,这什么语法啊?)另外,和__init__()相对的,还有__del__()方法,和destructor相对应。
=================================
=================================
2) 类变量。 python的类变量是定义在和方法同一级的,在调用的时候要使用类名.变量名的方式。类变量是所有对象(实例)共享的,对象变量是单独的,互不影响的。
=================================
=================================
3) python的继承看起来真是丑陋啊!
=================================
=================================
4) 读写文件。 python读写文件有“w”,“r”,“a”三种模式,分别代表“写”,“读”和“追加”。和ruby一样,打开文件还要关闭文件。
=================================
=================================
5) 导入模块的时候,可以通过as关键字,将模块重命名。
6) 存储器。 python中有存储器的概念,它有点奇怪,有点像对象的序列化和反序列化,但它是将对象保存到一个文件中,而不是将对象和字符串之间进行转换。存储器的相关模块为
函数名 功能
dir(obj) 显示对象的属性,如果没有提供参数,则显示全局变量的名字
help(obj) 显示对象的字符串文档,如果没有提供参数,则会进入交互式帮助
int(obj) 将一个对象转换为整型
len(obj) 返回对象的长度
open(fn, mode) 以mode方式打开文件fn
range([start,]stop[,step]) 返回一个整型列表,起始值为start,结束值为stop-1,start默认为0,step默认为1
raw_input(str) 等待用户输入一个字符串,str作为提示信息
str(obj) 讲一个对象转换为字符串
type(obj) 返回对象的类型
=================================
class Person:~def __init__(self, name):
~~self.name = name~def sayHi(self):~~print 'Hello, my name is', self.namep = Person('Swaroop')
p.sayHi()=================================
2) 类变量。 python的类变量是定义在和方法同一级的,在调用的时候要使用类名.变量名的方式。类变量是所有对象(实例)共享的,对象变量是单独的,互不影响的。
=================================
class Person:~'''Represents a person.'''~population = 0~def __init__(self, name):~~'''Initializes the person's data.'''~~self.name = name~~print '(Initializing %s)' % self.name# When this person is created, he/she
# adds to the population~~Person.population += 1~def __del__(self):~~'''I am dying.'''~~print '%s says bye.' % self.name
~~Person.population -= 1~~if Person.population == 0:~~~print 'I am the last one.'~~else:~~~print 'There are still %d people left.' % Person.population=================================
3) python的继承看起来真是丑陋啊!
=================================
class SchoolMember: '''Represents any school member.''' def __init__(self, name, age):
self.name = name
self.age = age print '(Initialized SchoolMember: %s)' % self.name def tell(self): '''Tell my details.''' print 'Name:"%s" Age:"%s"' % (self.name, self.age),class Teacher(SchoolMember): '''Represents a teacher.''' def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary print '(Initialized Teacher: %s)' % self.name def tell(self):
SchoolMember.tell(self) print 'Salary: "%d"' % self.salaryclass Student(SchoolMember): '''Represents a student.''' def __init__(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks print '(Initialized Student: %s)' % self.name def tell(self):
SchoolMember.tell(self) print 'Marks: "%d"' % self.marks
t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)print # prints a blank linemembers = [t, s]for member in members:
member.tell() # works for both Teachers and Students=================================
4) 读写文件。 python读写文件有“w”,“r”,“a”三种模式,分别代表“写”,“读”和“追加”。和ruby一样,打开文件还要关闭文件。
=================================
poem = '''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''f = file('poem.txt', 'w') # open for 'w'ritingf.write(poem) # write text to filef.close() # close the filef = file('poem.txt')# if no mode is specified, 'r'ead mode is assumed by defaultwhile True:
line = f.readline() if len(line) == 0: # Zero length indicates EOF break print line, # Notice comma to avoid automatic newline added by Pythonf.close() # close the file=================================
5) 导入模块的时候,可以通过as关键字,将模块重命名。
6) 存储器。 python中有存储器的概念,它有点奇怪,有点像对象的序列化和反序列化,但它是将对象保存到一个文件中,而不是将对象和字符串之间进行转换。存储器的相关模块为
cPickle(Pickle),存储的方法为dump(),读取的方法为load()。
=================================
import cPickle as p#import pickle as pshoplistfile = 'shoplist.data'# the name of the file where we will store the objectshoplist = ['apple', 'mango', 'carrot']# Write to the filef = file(shoplistfile, 'w')
p.dump(shoplist, f) # dump the object to a filef.close()del shoplist # remove the shoplist
# Read back from the storagef = file(shoplistfile)
storedlist = p.load(f)print storedlist
=================================
7) try..except。 python中捕获异常的语句怎么也这么奇怪呢?算不,反正比ruby人捕获异常语句好太多了。
=================================
import systry: s = raw_input('Enter something --> ')except EOFError: print '\nWhy did you do an EOF on me?' sys.exit() # exit the programexcept: print '\nSome error/exception occurred.' # here, we are not exiting the programprint 'Done'=================================
8) try .. finally。 和别的语言一样。
=================================
import timetry:
f = file('poem.txt') while True: # our usual file-reading idiom line = f.readline() if len(line) == 0: break time.sleep(2) print line,finally:
f.close() print 'Cleaning up...closed the file'=================================
9) 时间间隔。 python中的定时器是通过time模块的sleep()方法实现的。sleep()方法接收一个参数,单位为秒(不是微秒)。
10) 常用的内建函数。函数名 功能
dir(obj) 显示对象的属性,如果没有提供参数,则显示全局变量的名字
help(obj) 显示对象的字符串文档,如果没有提供参数,则会进入交互式帮助
int(obj) 将一个对象转换为整型
len(obj) 返回对象的长度
open(fn, mode) 以mode方式打开文件fn
range([start,]stop[,step]) 返回一个整型列表,起始值为start,结束值为stop-1,start默认为0,step默认为1
raw_input(str) 等待用户输入一个字符串,str作为提示信息
str(obj) 讲一个对象转换为字符串
type(obj) 返回对象的类型
浙公网安备 33010602011771号