类的属性和方法--文件处理--异常处理

类是一个特殊的对象--类对象
在程序运行的时候,类对象(创建实例对象的模板)
在内存中只有一份,通过它可以创建出很多个对象实例
除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法
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 '无论是否异常都会执行的代码'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值