Python基础—12-面向对象(02)
<h1 id="面向对象" data-source-line="1">面向对象
相关概念
继承语法
=
</span><span style="color: #0000ff">def</span><span style="color: #000000"> eat(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: #008000">#<span style="color: #008000"> 继承自Animal<span style="color: #0000ff">class<span style="color: #000000"> Dog(Animal): <span style="color: #0000ff">pass<span style="color: #000000"> d = Dog(<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: #000000">d.eat() <span style="color: #008000">#<span style="color: #008000"> 也可以拥有父类的属性 <span style="color: #0000ff">print(d.name) 派生示例 (<span style="color: #0000ff">class<span style="color: #000000"> Cat(Animal):
<span style="color: #0000ff">def<span style="color: #000000"> eat(self): <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">猫喜欢吃老鼠<span style="color: #800000">'<span style="color: #000000">) tom =<span style="color: #000000"> Cat() tom.run() <span style="color: #008000">#<span style="color: #008000"> 多出来的属性 重写方法
(
</span><span style="color: #0000ff">def</span><span style="color: #000000"> run(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">class<span style="color: #000000"> Cat(Animal):<span style="color: #008000">#<span style="color: #008000"> 父类的方法完全不合适,覆盖重写 <span style="color: #0000ff">def<span style="color: #000000"> run(self): <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">俺走的是猫步<span style="color: #800000">'<span style="color: #000000">)
<span style="color: #000000"> super().eat() jiafei =<span style="color: #000000"> Cat() 多继承:一个子类可以拥有多个父类 (<span style="color: #0000ff">class<span style="color: #000000"> B:
<span style="color: #0000ff">def<span style="color: #000000"> eat(self): <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">eat func in class B<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">class<span style="color: #000000"> C(A,B): c =<span style="color: #000000"> C()
权限
说明:定义类时,写在方法外的属性,通常会写在类的开头,这样的属性称为类属性 示例:
p1 = Person(<span style="color: #800000">'<span style="color: #800000">小明<span style="color: #800000">'<span style="color: #000000">)p2 = Person(<span style="color: #800000">'<span style="color: #800000">小红<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">print<span style="color: #000000">(p1.name,p2.name) <span style="color: #0000ff">print<span style="color: #000000">(Person.nation) <span style="color: #008000">#<span style="color: #008000"> p1.nation = 'china' <span style="color: #0000ff">print<span style="color: #000000">(p1.nation) <span style="color: #0000ff">print<span style="color: #000000">(p2.nation) <span style="color: #008000">#<span style="color: #008000"> print(Person.nation) <span style="color: #000000"> p1.age = 20 <span style="color: #008000">#<span style="color: #008000"> p1.height = 180 <span style="color: #008000">#<span style="color: #008000"> 特殊的类属性<span style="color: #008000"> <span style="color: #008000"> 表示类名的字符串<span style="color: #0000ff">print(Person.<span style="color: #800080">name<span style="color: #000000">) <span style="color: #008000">#<span style="color: #008000"> 表示父类构成的元组 <span style="color: #008000">#<span style="color: #008000"> 存储类的相关信息 <span style="color: #008000">#<span style="color: #008000"> 限制可以使用的属性
说明: 示例2:提供接口 ==
</span><span style="color: #0000ff">def</span><span style="color: #000000"> add(self):
</span><span style="color: #0000ff">return</span> self.num1 +<span style="color: #000000"> self.num2
</span><span style="color: #0000ff">def</span><span style="color: #000000"> sub(self):
</span><span style="color: #0000ff">return</span> self.num1 -<span style="color: #000000"> self.num2
</span><span style="color: #0000ff">def</span><span style="color: #000000"> mul(self):
</span><span style="color: #0000ff">return</span> self.num1 *<span style="color: #000000"> self.num2
</span><span style="color: #0000ff">def</span><span style="color: #000000"> div(self):
</span><span style="color: #0000ff">if</span> self.num2 ==<span style="color: #000000"> 0:
</span><span style="color: #0000ff">return</span><span style="color: #000000"> None
</span><span style="color: #0000ff">return</span> self.num1 /<span style="color: #000000"> self.num2
</span><span style="color: #008000">#</span><span style="color: #008000"> 对外提供简单易用的接口</span>
<span style="color: #000000"> @classmethod n1 =<span style="color: #000000"> cls(num1,num1) n12 =<span style="color: #000000"> n1.mul()
he = Number.pingfanghe(3,4<span style="color: #000000">)<span style="color: #0000ff">print(he)
说明:
示例: (
</span><span style="color: #008000">#</span><span style="color: #008000"> 创建对象</span>
<span style="color: #000000"> @staticmethod p =<span style="color: #000000"> Person() <span style="color: #0000ff">return<span style="color: #000000"> p Person.test() <span style="color: #0000ff">print(p) 总结:
定义:不同的对象,调用相同的方法,有不同的响应,称为多态
说明:将成员方法当做属性一样进行访问 作用:保护特定属性,或者对特定属性进行处理 示例: = =
</span><span style="color: #008000">#</span><span style="color: #008000"> 该方法可以像成员属性一样访问</span>
<span style="color: #000000"> @property <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">有人想查看密码<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">return <span style="color: #800000">'<span style="color: #800000">想偷看密码,没门<span style="color: #800000">' <span style="color: #008000">#<span style="color: #008000"> return self.__password
<span style="color: #000000"> @password.setter u = User(<span style="color: #800000">'<span style="color: #800000">xiaoming<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">222221<span style="color: #800000">'<span style="color: #000000">) <span style="color: #008000">#<span style="color: #008000"> 设置密码,会自动调用setter方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |