类是一个特殊的对象--类对象 在程序运行的时候,类对象(创建实例对象的模板) 在内存中只有一份,通过它可以创建出很多个对象实例 除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法 1.类属性 2.类方法 通过 类名.的方式直接访问类的属性 类属性:就是给类对象定义的属性 通常记录与这个类相关的特征 类属性不会记录以对象的特征
class Tool(object):
#1.使用赋值语句定义类属性,记录所有工具的数量
count = 0
def __init__(self,name):
self.name = name
#让类属性加1
Tool.count +=1
#创建工具对象
tool1 = Tool('斧头')
tool2 = Tool('11')
print Tool.count
类方法:
类属性就是针对类对象定义的
使用防止语句在class关键字下定义可以定义类属性
类属性用于记录与值个类相关的特性
类方法就是针对类对象定义的方法
在类方法内部可以直接访问类属性或者调用其他类方法
class Toy(object):
#使用赋值语句定义类属性,记录
count = 0
@classmethod
def show_toy_count(cls):
print '玩具对象的数量 %d'%cls.count
def __init__(self,name):
self.name = name
#让类属性加一
Toy.count +=1
toy1 = Toy('ss')
toy2 = Toy('ww')
toy3 = Toy('ww')
print Toy.count
静态方法:
在开发的时候如果需要在类中封装一个方法
这个方法既不需要实例属性和方法
也不需要访问类属性或者类方法
这个时候,我们就把这个方法封装成一个静态方法
class Cat(object):
#不访问实例属性/类属性
@staticmethod
def call():
print '静态方法'
#通过 类名. 调用静态方法
Cat.call()
#不需要创建对象,直接就可以使用
设计模式
设计模式是前人的总结和经验
创建对象的时候:
1.为对象分配空间:__new__()
创建对象的时候,python解释器首先会调用__new__
方法为对象分配空间,new是一个由object基类提供的
内置静态方法,主要作用:
在内存中为对象分配空间
返回对象的引用
2.对象初始化__init__():
python解释器获得对象的引用后,将引用的第一个参数
传递给init方法
class MusicPlayer(object):
def __new__(cls, *args, **kwargs):
#cls:哪一个类调用就传递哪一个类
#*args:是一个多值元组参数
#**kwargs:是一个多值的字典参数
#1.创建对象时,new方法会被自动调用
print '创建对象,分配空间'##重写了父类方法
#2.为对象分配内存空间
#new方法时一个静态方法
instance = object.__new__(cls)
return instance
def __init__(self):
print '初始化方法'
#创建播放器对象
player1 = MusicPlayer()
print player1
文件操作:
打开 操作 关闭
r:只能读,不能写,读取不存在的文件报错
r+:可读,可写,写在文件前面,文件不存在报错
w:只能写,会覆盖源文件,如果不存在会新建文件
w+:不能读,会覆盖源文件,如果不存在会新建文件,
读不存在文件不报错
a:只能写,能读,文件不存在新建文件不会报错
文件存在追加
a+:文件可以写,可以读,存在时会追加,不存在时会新建
f = open('passw','w+')
content = f.read()
# content =f.write('hello')
print content
f.close()
文件指针
文件指针标记从哪个位置开始读取数据
第一次打开文件时,通常文件指针会指向文件的开始位置
当执行了read方法之后,文件指针会移动到读取内容的末尾
file = open('passwd')
text = file.read()
print text
print type(text)
print '******'
#移动文件指针到文件开头
file.seek(0)
text = file.read()
print len(text)
file.close()
文件复制
打开一个已经存在的文件,读取完整内容,并写到另一个文件中去
#源文件以只读方式打开
file_read = open('passwd','r')
#目标文件以只写方式打开
file_write = open('copy_passwd','w')
#从源文件中读取内容
text = file_read.read()
#将读取的内容写道目标文件
file_write.write(text)
#关闭文件
file_read.close()
file_write.close()
根据错误类型来捕获异常 try: 尝试执行的代码 except 错误类型1: 针对错误类型1:对应的代码处理 except 错误类型2: 针对错误类型2,对应的代码处理
1.提示用户输入一个整数 2.使用8除以用户输入的整数并输出
try:
#提示用户输入一个整数
num = int(raw_input('please input interger'))
#使用8除以整数并且输出
result = 8/num
print result
except ValueError:
print 'input is not number'
# except ZeroDivisionError:
# print '0 is not illage'
#没有预先判断到错误,但是如果出现,我们也不希望程序以外停止
except Exception as result:
print 'unknow error %s'%result
finally:
#无论是否异常都会执行的代码
print '无论是否异常都会执行的代码'