Python基础—11-面向对象(01)
<h1 id="面向对象" data-source-line="1">面向对象
类的定义: 语法说明:
示例:
<span style="color: #008000">#<span style="color: #008000"> 定义对象liang =<span style="color: #000000"> Person() <span style="color: #008000">#<span style="color: #008000"> 调用方法 <span style="color: #000000">liang.eat() liang.sleep() <span style="color: #008000">#<span style="color: #008000"> 属性时动态添加的 liang.name = <span style="color: #800000">'<span style="color: #800000">上官<span style="color: #800000">' <span style="color: #008000">#<span style="color: #008000"> 获取属性 <span style="color: #0000ff">print(liang.name) self使用
(
</span><span style="color: #0000ff">def</span><span style="color: #000000"> introduce(self):
</span><span style="color: #008000">#</span><span style="color: #008000"> 不但可以访问成员属性</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">.format(self.name))
</span><span style="color: #008000">#</span><span style="color: #008000"> 还可以调用成员方法</span>
<span style="color: #000000"> self.run() fei =<span style="color: #000000"> Person()fei.name = <span style="color: #800000">'<span style="color: #800000">欧阳<span style="color: #800000">'<span style="color: #000000"> fei.run() fei.introduce() long =<span style="color: #000000"> Person()long.name = <span style="color: #800000">'<span style="color: #800000">诸葛<span style="color: #800000">'<span style="color: #000000"> long.introduce()
1234.通过self可以访问成员属性,也可以调用成员方法
james =<span style="color: #000000"> Person()
james.name = <span style="color: #800000">'<span style="color: #800000">勒布朗.詹姆斯<span style="color: #800000">'<span style="color: #000000"> james.age = 33 <span style="color: #0000ff">print(james) 练习:
构造方法:创建对象后,初始化属性时,系统会自动调用该方法 </span><span style="color: #008000">#</span><span style="color: #008000"> 构造方法:创建对象后,初始化系统就会自动调用该方法</span>
<span style="color: #0000ff">def</span> <span style="color: #800080">__init__</span><span style="color: #000000">(self,name,age,color):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">__init__</span><span style="color: #800000">'</span><span style="color: #000000">)
self.name </span>=<span style="color: #000000"> name
self.age </span>=<span style="color: #000000"> age
self.color </span>=<span style="color: #000000"> color
<span style="color: #008000">#<span style="color: #008000"> 这种形式比较繁琐<span style="color: #008000">
<span style="color: #008000"> tom = Cat()<span style="color: #008000">
<span style="color: #008000"> tom.name = 'Tom'<span style="color: #008000">
<span style="color: #008000"> tom.age = 3<span style="color: #008000">
<span style="color: #008000"> tom.color = '蓝色'
<span style="color: #008000">#<span style="color: #008000"> 这种比较简洁 析构方法:当对象释放时系统会自动调用,通常用于释放资源
(bajie =<span style="color: #000000"> Pig()
<span style="color: #0000ff">del<span style="color: #000000"> bajie <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">八戒,一路走好!<span style="color: #800000">') 经典示例:小明手里有两张牌,左手?K,右手?A,小明交换两手的牌后,手里分别是什么?
<span style="color: #008000"># <span style="color: #008000"> 扑克牌<span style="color: #0000ff">class<span style="color: #000000"> Poker: <span style="color: #0000ff">def <span style="color: #800080">init<span style="color: #000000">(self,color,number): self.color =<span style="color: #000000"> color self.number =<span style="color: #000000"> number
<span style="color: #008000">#<span style="color: #008000"> 创建两张牌 <span style="color: #008000">#<span style="color: #008000"> 手的类
<span style="color: #008000">#<span style="color: #008000"> 创建左右两只手 <span style="color: #008000">#<span style="color: #008000"> 人的类
<span style="color: #008000">#<span style="color: #008000"> 创建小明对象 <span style="color: #008000">#<span style="color: #008000"> 展示手里的牌 <span style="color: #008000">#<span style="color: #008000"> 交换两手的牌 <span style="color: #008000">#<span style="color: #008000">再次展示 练习:设计一个数学类,有两个成员属性,成员方法有加、减、乘、除,展示成员。
内置函数:在类的内部,特定时机自动触发的函数。 将对象当做字典操作,特定时机会自动触发的方法
self.[key] =
</span><span style="color: #008000">#</span><span style="color: #008000"> 将对象当做字典操作,根据键获取值时会触发该方法</span>
<span style="color: #0000ff">def</span> <span style="color: #800080">__getitem__</span><span style="color: #000000">(self,item):
</span><span style="color: #008000">#</span><span style="color: #008000"> print(item)</span>
<span style="color: #0000ff">return</span> self.<span style="color: #800080">__dict__</span><span style="color: #000000">.get(item)
</span><span style="color: #008000">#</span><span style="color: #008000"> 将对象当做字典操作,删除指定的键值对时自动触发</span>
<span style="color: #0000ff">def</span> <span style="color: #800080">__delitem__</span><span style="color: #000000">(self,key):
</span><span style="color: #0000ff">del</span> self.<span style="color: #800080">__dict__</span><span style="color: #000000">[key]
xiaoming =<span style="color: #000000"> Person()xiaoming[ <span style="color: #800000">'<span style="color: #800000">name<span style="color: #800000">'] = <span style="color: #800000">'<span style="color: #800000">小明<span style="color: #800000">'<span style="color: #0000ff">print(xiaoming.<span style="color: #800080">dict<span style="color: #000000">) <span style="color: #0000ff">print(xiaoming[<span style="color: #800000">'<span style="color: #800000">name<span style="color: #800000">'<span style="color: #000000">]) <span style="color: #0000ff">del xiaoming[<span style="color: #800000">'<span style="color: #800000">name<span style="color: #800000">'] 将对象当做函数调用时,会自动触发下面方法
(self,*args,**
xiaoming =<span style="color: #000000"> Person()
<span style="color: #008000">#<span style="color: #008000"> 这样操作,需要提供call方法
ret = xiaoming(1,2,name=<span style="color: #800000">'<span style="color: #800000">小明<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">print(ret) 函数判断 (self,**
<span style="color: #0000ff">def <span style="color: #000000"> test():<span style="color: #0000ff">pass<span style="color: #000000"> a =<span style="color: #000000"> A() <span style="color: #008000">#<span style="color: #008000"> 判断是否可调用<span style="color: #0000ff">print<span style="color: #000000">(callable(test)) <span style="color: #0000ff">print<span style="color: #000000">(callable(a)) <span style="color: #008000">#<span style="color: #008000"> 判断是否拥有'call'属性 <span style="color: #008000">#<span style="color: #008000"> 判断是否是函数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |