Python全栈开发——面向对象的三大特性(继承 & 多态 &封装)

1.继承

1.两层意思

改变和扩展(详细看随笔继承和组合

 

2.多态(体现在运行时的状态)

1.不同的类可以调用相同的方法,得到不同的结果

2.实际上是继承的一种体现机制

 

复制代码
class H2o:
    def __init__(self,name,temperature):
        self.name=name
        self.temperature=temperature

    def turn_ice(self):
        if self.temperature<0:
            print('温度太低,变成【%s】' %self.name)

        if self.temperature>100:
            print('温度太高,变成【%s】' %(self.name))

        if self.temperature>=0 and self.temperature<=100:
            print('温度适中,变成【%s】' %self.name)
class water(H2o):
    pass
class ice(H2o):
    pass
class Steam(H2o):
    pass
w1=water('water',46)
i1=ice('ice',-12)
s=Steam('stream',199)

w1.turn_ice()   # 温度适中,变成【water】
i1.turn_ice()   # 温度太低,变成【ice】
s.turn_ice()     #温度太高,变成【stream】
复制代码

 

3.封装

1.抛开面向对象,你单独想什么是装,装就是拿一个麻袋,把小猫, 小狗等一起装进麻袋 ,在面向对象中,

这个麻袋就是你的类或对象,类或对象这两个麻袋 装了数据属性和函数属性,那么对于类或对象来说,封的概念代表隐藏

2.两种方法隐藏

1.在前面加 (_)         (实际上是一种约定,还可以访问,但程序员知道访问这个不对)

2.在前面加(__)            (实际上是字符串拼接

 

复制代码
class Peoson:

    _star='earth'
    def __init__(self,name,age):
        self._name=name
        self.__age=age
p1=Peoson('lujiacheng',19)
print(p1._star)         #earth
print(p1._name)         #lujiacheng
print(p1._Peoson__age)  #19  实际上是拼接
复制代码

 

3.第三层次的封装:区分内外(利用第二层次的封装),外部没法访问,只在内部使用, 外部要访问,可定义一个接口(即函数),

供外部访问 (但设计时要充分考虑数据是否要封装,不然接口很多,所以不能乱用封装

 

posted @   lujiacheng-python  阅读(117)  评论(0)    收藏  举报
编辑推荐:
· 一个字符串替换引发的性能血案:正则回溯与救赎之路
· 为什么说方法的参数最好不要超过4个?
· C#.Net 筑基-优雅 LINQ 的查询艺术
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
· 大数据高并发核心场景实战,数据持久化之冷热分离
阅读排行:
· 发布一个小功能,通过 markdown 图片语法嵌入B站视频
· 《HelloGitHub》第 111 期
· 使用GcExcel .NET将Excel导出为PDF
· MySQL 字符集、排序规则与查询关系详解
· 【设计模式】外观模式
点击右上角即可分享
微信分享提示