python(七)python的类、对象,和python异常处理机制

Python的异常处理机制

Python常见的异常类型

在这里插入图片描述

try except结构

捕获异常的顺序按照先子类后父亲类的顺序,为了避免遗漏可能出现的异常,可以在最后增力加BaseException

try:
 n1=int(input('请输入一个整数:'))
 n2=int(input('请输入一个整数:'))
 result=n1/n2
 print('结果为:',result)
except ValueError:
 print('不能讲字符串转换成数字')
except ZeroDivisionError:
 print('除数不能为0')
except BaseException as e:
 print(e)

try…except…else结构

如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块。

try:
    n1=int(input('请输入一个整数:'))
    n2=int(input('请输入一个整数:'))
    result=n1/n2
except BaseException as e:
    print('出错了')
    print(e)
else:
    print('结果为:',result)

try…except…else…finally结构

finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源
在这里插入图片描述

traceback模块

使用traceback模块打印异常信息

import traceback
try:
    print('-------------------------')
    print(100/0)
except:
    traceback.print_exc()

类与对象

类别,分门别类,物以类聚,人类,鸟类,动物类,植物类.……
类是多个类似事物组成的群体的统称。能够帮助我们快速理解和判断事物的性质

数据类型

不同的数据类型属于不同的类·使用内置函数查看数据类型

print(type(100))
print(type('HelloWorld'))

对象

10、20、30 都是int类之下包含的相似的不同个例,这个个例专业数语称为实例或对象。python中一切皆对象。
在这里插入图片描述

class Student: #创建类
    pass

#Python中一切皆对象Student是对象吗?内存有空间吗?
print(id(Student))
print(type(Student))
print(Student)

类的组成

类属性
实例方法
静态方法
类方法

对象的创建

在这里插入图片描述

class Student: #Student为类的名称(类名)由一个或多个单词组成,每个单词的首字母大写,其余小写
    native_pace='杭州' #直接写在类里的变量,称为类属性
    def __init__(self,name,age):
         self.name=name        #self.name  实例属性,进行了一个赋值的操作,将局部变量的name的值赋给实体属性
         self.age=age
     #实例方法
    def eat(self):
          print('学生在吃饭')

     #静态方法
    @staticmethod
    def method():
         print('我是用了staticmethod进行修饰,所以我是静态方法')

#在类之外定义的称为函数,在类之内定义的称为方法
def drink():
    print('喝水')

#创建Student类的对象
stu1=Student('张三',20)
stu1.eat()  #对象名.方法名()
print(stu1.name,stu1.age)
print('--------------')
Student.eat(stu1) #类名.方法名(类的对象)-->实际上就是方法定义的self


学生在吃饭
张三 20
--------------
学生在吃饭

类属性,类方法,静态方法

类属性:类中方法外的变量称为类属性,被该类的所有对象所共享
类方法:使用@classmethod修饰的方法,使用类名直接访问的方法
静态方法:使用@staticmethod修饰的主法,使用类名直接访问的方法

print(Student.native_place) #访问类属性
Student.cm()  #调用类方法
Student.sm () #调用静态方法
stu1=Student('张三',30)
stu2=Student('李四',40)
print(stu1.native_pace)
print(stu2.native_pace)

Student.native_pace='北京'
print(stu1.native_pace)
print(stu2.native_pace)

print('---------类方法的使用方式------------')
Student.cl()

print("---------静态方法的使用方式------------")
Student.method()

动态绑定属性和方法

Python是动态语言,在创建对象之后,可以动态地绑定属性和方法

class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def eat(self):
       print(self.name+"在休息")

stu1=Student('张三',30)
stu2=Student('李四',40)

stu1.eat()    #调用eat方法
stu2.eat()

print('------动态绑定stu1性别属性-------')
stu1.gender='男'
print(stu2.name,stu1.age,stu1.gender)

print("-----------动态绑定方法--------------")
def show():
    print('定义在类之外的,称为函数')
stu1.show=show  #函数绑定在对象上就称为方法了
stu1.show()     #调用show方法


张三在休息
李四在休息
------动态绑定stu1性别属性-------
李四 30 男
-----------动态绑定方法--------------
定义在类之外的,称为函数

总结:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值