Python 面向对象的三大特性:封装,继承,多态
2024-08-27 10:44:07
# 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到子类中
class Animate:
a = 1 # 公有的资源
_b = 2 # 受保护的资源
__c = 3 # 私有的资源 def t1(self):
print("t1") def _t2(self):
print("t2") def __t3(self):
print("t3") # 内置方法
def __init__(self):
print("init , Animate") class Person(Animate):
def test(self):
print(self.a)
print(self._b)
# print(self.__c) #访问父类私有的资源会有错误
self.t1()
self._t2()
# self.__t3() #访问父类私有的资源会有错误 p = Person()
print(p.test()) Animate.a = 100 # 设置个类属性值,下面看a的值是否有变化,如果是变化的,代表只是有Animate的使用权
p.test() # 资源的使用:(继承的形态:单继承,无重叠的多继承,有重叠的多继承)
print(Person.mro()) # --------------------- 多态 (python 没有真正意思上的多态,也不需要多态 -------------------------------
class Animal():
def speaker(self):
pass class Dog(Animal):
def speaker(self):
print("wangwang") class Cat(Animal):
def speaker(self):
print("miaomiao") def test(obj):
obj.speaker() d = Dog()
c = Cat() test(d)
test(c) # --------------------- 抽象类 和 抽象方法 --------------------------
import abc
class Animal(object, metaclass=abc.ABCMeta):
@abc.abstractmethod
def speaker(self):
pass class Dog(Animal):
def speaker(self):
print("wangwang")
pass class Cat(Animal):
def speaker(self):
print("miaomiao") def test(obj):
obj.speaker() d = Dog()
最新文章
- 【Knockout.js 学习体验之旅】(2)花式捆绑
- 【转】iOS,搜索标签布局
- ArcEngine 岛状多边形内部环的获取
- springMVC之servlet-config.xml配置
- Android View中的控件和监听方法...
- 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识
- 在matlab中实现遥感影像和shp文件的结合显示
- Android屏幕适配原理
- 【转】Android 全屏方案(隐藏NavigationBar)
- 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践
- 「APIO2017」商旅
- UltralEdit 替换回车换行符
- oracle rename数据文件的两种方法
- nopcommerce 常用属性验证
- HDU - 5651 xiaoxin juju needs help 逆元模板
- Docker中执行Shell出现乱码
- 我的octopress配置
- python中的MRO和C3算法
- js和jQuery获取各种屏幕或文档的高度和宽度
- docker离线安装 启动报错Job for docker.service failed because the control process exited with error code. See ";systemctl status docker.service"; and ";journalctl -xe"; for details.