Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249602
  • 博文数量: 49
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1334
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-14 08:53
个人简介

勤于思考,默默学习。

文章分类

全部博文(49)

文章存档

2017年(1)

2016年(2)

2015年(1)

2014年(45)

我的朋友

分类: 系统运维

2014-08-15 10:01:31

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!

阅读(3081) | 评论(0) | 转发(1) |
0

上一篇:自学python,day3

下一篇:zabbix服务端安装

给主人留下些什么吧!~~