分类: 系统运维
2014-12-02 18:40:48
原文地址:自学python,day4 作者:月色书香
python 运维编程Day4
本日内容:
--异常处理
--面向对象编程介绍
--类的使用
--第一个面向对象的编程
--子类的继承
--程序练习
1.python异常处理
常见的python异常:
AttributeError >>试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError >>输入/输出异常;基本上是无法打开文件
ImportError >>无法引入模块或包;基本上是路径问题或名称错误
IndentationError >>语法错误(的子类);代码没有正确对齐
IndexError >>下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError >>试图访问字典里不存在的键
KeyboardInterrupt >>Ctrl+C被按下
NameError >>使用一个还未被赋予对象的变量
SyntaxError >>Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError >>传入对象类型与要求的不符合
UnboundLocalError >>试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致以为正在访问它
ValueError >>传入一个调用者不期望的值,即使值的类型是正确的
例:
try:
print x
except NameError:
print "Something is wrong!"
raise index
#类的定义:
class MyException(Exception):
pass
#手动触发异常:
try:
#some code here
raise MyException
except MyException:
print "MyException encoutered"
try ...... finally
Finally ----无论try块是否抛出异常,永远执行的代码。通常用来执行关闭文件,断开服务器连接的功能等等。
class MyException(Exception):pass
try:
#some code here
raise MyException
except MyException:
print "MyException encoutered"
finally:
print "Arrive finally"
可以在try块加入else块,代码块将在没有异常被抛出的时候执行;
try:
print "normal code here"
except MyException:
print "MyException encoutered"
else:
print "No exception"
raise 同时添加数据
raise异常的同时,我们可以添加一些额外的数据,就像下面的例子一样:
class MyException(Exception):
pass
try:
raise MyException,"and some additional data"
except MyException,data:
print "MyException encoutered"
print data
#-------output--------? (data会打印出"and some additional data")
2.面向对象的编程
世界万物,皆可分类
一切皆为对象
对象---类的实体\一个叫rain的好色的男人
类---人\动物\机器
方法---人会走,会思考\狗会叫,会咬人\定义一个类的各个功能
消息传递---狗交了,人听见了,就叫通信
继承 ----狗都四条腿走路
多态性----一个叫的功能,可能是低吼,也可能是大声叫
抽象性----简化复杂的现实问题的途径,他可以为具体问题找到最恰当的类定义
python是面向对象的语言
self
---类的方法与普通函数只有一个特别的区别---他们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,
python会提供这个值。这个特别的变量指对象本身,按照惯例他的名称是self。
---如果有一个类成为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1,arg2)的时候,这会由python
自动转化为MyClass.method(MyObjet,arg1,arg2)
###第一个类的第一个函数的第一个参数必须是self
###################################################################################
#类的语法
class dog:
def name(self):
print "Hello master,my name is python"
D = dog() #将类赋给D这个实体
D.name() #引用dog类下面的name方法
>>>Hello master,my name is Python
__init__初始化
from os.path import join
class FileObject:
#"给文件对象进行包装从而确认在删除时文件流关闭"
def __init__(self,filepath='~',filename='sample.txt')
#读写模式打开一个文件
self.file=open(join(filepath,filename),'r+')
def __del__(self):#解构器
self.file.close()
del self.file
对实体进行初始化
class Dog:
def __init__(self,name):
self.DogName=name #必须赋值self,否则类中其他函数无法调用
def bark(self):
print "Wang!Wang Wang!"
D = Dog('Sam')
D.bark()
########################################################################################
#定义类:
class person:
def info(self,name,age): ###第一个类的第一个函数的第一个参数必须是self
print "you name is %s,and you are %s years old!" %(name,age)
P = person()
P.info("gaofubin",23)
#类的初始化
class person: ###person()是继承其他类的
def __init__(self,nationality):
self.country = nationality ###把nationnality赋值给类的本身的变量
def info(self,name,age): ###第一个类的第一个函数的第一个参数必须是self
print "you name is %s,and you are %s years old!,you are from %s" %(name,age,self.country)
P = person('CN') ###(类的初始化原理)只要调用类,就会执行代码。
P.info("gaofubin",23)
#类的绑定
class Person:
def __init__(self,Type,Sex,Age,Name):
self.race = Type
self.sex = Sex
self.age = Age
self.name = Name
def talk(self,msg=0):
self.msg = msg
if self.msg != 0:
print self.name,'Saying:',self.msg
P = Person('Black','Female','24','Susan')
P.talk('Hello,My name is %s '%P.name)
#类的继承
class Person:
def __init__(self,Type,Sex,Age,Name):
self.race = Type
self.sex = Sex
self.age = Age
self.name = Name
def talk(self,msg=0):
self.msg = msg
if self.msg != 0:
print self.name,'Saying:',self.msg
class Person_info(Person):
def __init__(self,Type,Sex,Age,Name,nation,work,salary):
Person.__init__(self,Type,Sex,Age,Name)
self.country = nation
self.job = work
self.salary = salary
def tell(self,msg):
print ''' %s's persional infomation:
Name:%s
Age :%s
Nation:%s
Work:%s
'''%(self.name,self.name,self.age,self.country,self.job)
gaofubin Saying: hello,my name is gaofubin,I am 23 years old!