zoukankan      html  css  js  c++  java
  • 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.第三层次的封装:区分内外(利用第二层次的封装),外部没法访问,只在内部使用, 外部要访问,可定义一个接口(即函数),

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

  • 相关阅读:
    SQL易错总结1
    线程池使用总结
    多线程的上下文切换
    SQL 排序按指定内容优先排序
    System x 服务器制作ServerGuide U盘安装Windows Server 2008 操作系统 --不格式化盘
    错误“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”解决方案
    sql server 2012 链接服务器不能链接sql server 2000的解决方案 ,
    sqlserver2005版本的mdf文件,还没有log文件,
    BCP SQL导出EXCEL常见问题及解决方法;数据导出存储过程
    Nginx
  • 原文地址:https://www.cnblogs.com/lujiacheng-Python/p/9736163.html
Copyright © 2011-2022 走看看