Python基础—13-面向对象及异常处理
<h1 id="面向对象及异常处理" data-source-line="1">面向对象及异常处理 总结:
算术运算符重载
=
</span><span style="color: #008000">#</span><span style="color: #008000"> 对象出现在'+'左边时会自动触发</span>
<span style="color: #0000ff">def</span> <span style="color: #800080">__add__</span><span style="color: #000000">(self,other):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__add__</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span> self.num +<span style="color: #000000"> other
</span><span style="color: #008000">#</span><span style="color: #008000"> 对象出现在'+'右边是会自动触发</span>
<span style="color: #0000ff">def</span> <span style="color: #800080">__radd__</span><span style="color: #000000">(self,other):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__radd__</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span> self.num +<span style="color: #000000"> other
</span><span style="color: #008000">#</span><span style="color: #008000"> +=运算时会自动触发,没有时会触发 __add__</span>
<span style="color: #0000ff">def</span> <span style="color: #800080">__iadd__</span><span style="color: #000000">(self,other):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__iadd__</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span> Number(self.num +<span style="color: #000000"> other)
n = Number(100<span style="color: #000000">)ret = n + 200<span style="color: #000000"> ret = 200 +<span style="color: #000000"> n <span style="color: #0000ff">print<span style="color: #000000">(ret) n += 200 <span style="color: #008000">#<span style="color: #008000"> n = n + 200 <span style="color: #0000ff">print(n)
加法:、、、、、、、、、、
关系运算符重载 >:
=:
<:
<=:
==:
!=:
示例 =
</span><span style="color: #0000ff">def</span> <span style="color: #800080">__gt__</span><span style="color: #000000">(self,other):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__gt__</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span> self.num > 200
<span style="color: #0000ff">def</span> <span style="color: #800080">__lt__</span><span style="color: #000000">(self,other):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__lt__</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span> self.num <<span style="color: #000000"> other
</span><span style="color: #0000ff">def</span> <span style="color: #800080">__eq__</span><span style="color: #000000">(self,other):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__eq__</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span> self.num ==<span style="color: #000000"> other
</span><span style="color: #008000">#</span><span style="color: #008000"> 当没有此方法时,使用!=也会触发__eq__方法</span>
<span style="color: #0000ff">def</span> <span style="color: #800080">__ne__</span><span style="color: #000000">(self,other):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__ne__</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span> self.num !=<span style="color: #000000"> other
n = Number(100<span style="color: #000000">) <span style="color: #008000">#<span style="color: #008000"> print(n > 200)<span style="color: #008000"> <span style="color: #008000"> print(200 > n)<span style="color: #008000"><span style="color: #008000"> print(200 == n)<span style="color: #0000ff">print(200 != n)
引用计数
函数传参
深浅拷贝 (p1 =<span style="color: #000000"> Person()
p2 =<span style="color: #000000"> p1 <span style="color: #0000ff">print<span style="color: #000000">(id(p1)) <span style="color: #0000ff">print<span style="color: #000000">(id(p2)) <span style="color: #0000ff">del<span style="color: #000000"> p1 <span style="color: #0000ff">del<span style="color: #000000"> p2 <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">OVER<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">def<span style="color: #000000"> test(m): <span style="color: #008000">#<span style="color: #008000"> n = 100 test(n) <span style="color: #0000ff">import<span style="color: #000000"> copy lt = [1,2,[3,4<span style="color: #000000">]] <span style="color: #008000">#<span style="color: #008000"> 浅拷贝,只拷贝对象本身,不拷贝对象中的元素<span style="color: #008000"> <span style="color: #008000"> lt2 = lt.copy()<span style="color: #008000"><span style="color: #008000"> 浅拷贝lt2 =<span style="color: #000000"> copy.copy(lt) <span style="color: #008000">#<span style="color: #008000"> 深拷贝:不但拷贝对象本身,还拷贝对象中的元素 <span style="color: #0000ff">print<span style="color: #000000">(id(lt))
说明:数据持久化存储方案,普通文件、序列化、数据库
相关概念
异常处理
异常语法: (
3/
(<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">其他内容<span style="color: #800000">')
多个异常 <span style="color: #0000ff">try <span style="color: #000000">:<span style="color: #008000">#<span style="color: #008000"> print(a) <span style="color: #008000">#<span style="color: #008000"> 3/0 fp = open(<span style="color: #800000">'<span style="color: #800000">123.txt<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">except<span style="color: #000000"> (NameError,ZeroDivisionError) as e: <span style="color: #008000">#<span style="color: #008000"> 将某些异常进行统一处理,写在一个元组中即可 <span style="color: #0000ff">print<span style="color: #000000">(e) <span style="color: #0000ff">except<span style="color: #000000">: <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">其他异常<span style="color: #800000">') 完整结构(else-finally) (
(
(
()
抛出异常: (
Exception((<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">OVER<span style="color: #800000">')
异常嵌套(try-except结构中再次使用try-except结构) (( Exception((( Exception((((<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">热情满满的开始一天的工作<span style="color: #800000">')
自定义异常类(需要继承自官方的异常基类Exception)
=
</span><span style="color: #0000ff">def</span> <span style="color: #800080">__str__</span><span style="color: #000000">(self):
</span><span style="color: #0000ff">return</span><span style="color: #000000"> self.msg
</span><span style="color: #008000">#</span><span style="color: #008000"> 特定异常标准处理方案</span>
<span style="color: #0000ff">def</span><span style="color: #000000"> deal(self):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">处理特定的自定义异常</span><span style="color: #800000">'</span><span style="color: #000000">)
<span style="color: #0000ff">try<span style="color: #000000">:<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">正常执行<span style="color: #800000">'<span style="color: #000000">) <span style="color: #008000">#<span style="color: #008000"> 手动抛出自定义异常 <span style="color: #0000ff">raise MyException(<span style="color: #800000">'<span style="color: #800000">出现了自定义异常<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">except<span style="color: #000000"> MyException as e: <span style="color: #0000ff">print<span style="color: #000000">(e) <span style="color: #008000">#<span style="color: #008000"> 调用方法,处理异常 e.deal() 特殊场景
,= fp.read(5
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |