学习日记24
mixnins机制
# 1.多继承分主类和辅类,继承辅类就有该辅类中的功能,不影响子类使用,辅类使用特殊结尾(Minxin,able,ible)
# 2.规范写法,辅类写在主类左边
class Vehicle: # 交通工具
pass
class Flyable():
def fly(self):
'''
飞行功能相应的代码
'''
print("I am flying")
class CivilAircraft(Flyable,Vehicle): # 民航飞机
pass
class Helicopter(Flyable,Vehicle): # 直升飞机
pass
class Car(Vehicle): # 汽车并不会飞,但按照上述继承关系,汽车也能飞了
pass
内置方法
__init__():
__str__():只有在打印对象的时候自动触发
__del__():1.手动删除对象的时候自动触发
2.应用程序运行完毕自动触发,清理资源
补充:
isinstance('123', str) # 判断'123'是不是str的实例
issubclass(Foo, object)# Foo是不是object的子类
__getattr__:当你访问一个不存在的属性时会触发
__setattr__:给对象添加/修改属性会触发
__call__:当对象加括号调用的时候就会自动触发
__gt__:满足比较的条件下自动触发
其他内置方法看博客
反射
class Student():
school = 'sh'
obj = Student()
x = inpot('请输入学校')
print(obj.x) # 报错,因为x是字符串
反射的作用就是通过字符串操作类属性或者方法
如果取不到这个值就用紧跟其后的值
print(getattr(obj,x,None))
判断有没有类中有没有这个属性
print(hasattr(obj,x))
设置类里的值
setattr(obj,'c',10)
删除类里的属性
delattr(obj,'school')
调用函数方法
getattr(obj,'func')()
异常
1.什么是异常
异常就是错误发生的信号,当遇到该信号就会抛出异常,如果不对该异常做处理,那么此后的代码都不再运行
具体来说,异常分为两种:
1.语法错误 # SyntaxError
2.逻辑错误
print(x)
尽量把逻辑写的完美
2.为什么用异常
为了增强代码的可靠性,健壮性,
3.如何使用异常
# NameError: name 'x' is not defined
print(x)
# IndexError: list index out of range
l = [1,2,3]
l[5]
# KeyError: 'k1'
dic = {'k':'v'}
dic['k1']
# AttributeError: 'Foo' object has no attribute 'x'
class Foo():
pass
obj = Foo()
obj.x
# TypeError: 'int' object is not iterable
for i in 123:
pass
# ZeroDivisionError: division by zero
1/0
等等,如何处理
try:
被检查代码
被检查代码
被检查代码
被检查代码
被检查代码
被检查代码
pass
except 异常信息1 as e:
捕捉到异常信息
except 异常信息2 as e:
捕捉到异常信息
except 异常信息3 as e:
捕捉到异常信息
except 异常信息4 as e:
捕捉到异常信息
except Exerption as e:
只要前面的错误信息没有捕捉到,都算这个
else:
当被检测的代码没有异常时会执行
finally:
不管被检测的代码有没有异常都会执行
断言
l = [1,2,3]
if len(l) < 5:
raise Exception('断言失败')
print('end---->')
#断言
assert len(l) = 5
#断言l的长度必须是5,如果不是5就抛出异常,是5就当没写
# 自定义异常
class Myexception(BaseException):
def __init__(self,msg):
self.msg = msg
def __str__(self):
return '异常信息:%s' % self.msg
raise Myexception('出异常了')

浙公网安备 33010602011771号