zoukankan      html  css  js  c++  java
  • 学习总结(二十六)

    1.封装

           1)什么是封装:对外部隐藏内部的属性,以及实现细节 , 给外部提供使用的接口

            2)为什么要封装:提高安全性,隔离复杂度

            3)怎么封装: 在函数前加双__就可以封装函数

            4)什么样的方法应该被封装起来:一个为内部支持的方法,不应该让外界直接访问,那就封装起来

            @Property标签 :将一个方法伪装成普通属性

             案例:

    class Student(object):
        @property
        def score(self):
            return self._score
        @score.setter
        def score(self,value):
            self._score=value
    

     2.多态

             多态不是一个具体的技术,值的是多个不同类型对象,剋有响应同一个方法,产生不同结果

            

            

    class Cat():
        def bark(self):
            print("喵喵喵")
        def run(self):
            print("四条腿跑!")
        def sleep(self):
            print("趴着睡!")
            
    class Pig():
        def bark(self):
            print("哼哼哼!")
        def run(self):
            print("四条腿跑!")
        def sleep(self):
            print("侧躺着睡!")
    
    # 一个用来管理动物的方法   只要你传入是一个动物 我就按照动物的标准来使用 完全不用考虑你具体是什么类型
    def management_animal(animal):
        print("==================正在溜%s=============" % animal.__class__.__name__)
        animal.bark()
        animal.run()
        animal.sleep()
    

      

       3.常见的内置函数 

             1)__str__

                  __str__执行时机:在将对象转为字符串时执行

                 __str__的作用:子类可以通过覆盖该方法对打印内容的自定义

               2)__del__

                    __del__执行时机:当对象被删除前会自动调用该方法

            __del__的作用:当你的对象在创建时,开启了不属于解释器的资源,就可以使用__del__方法执行删除不属于解释器的资源该方法就是用来关闭多余资源的方法

              

        4.反射

              1)什么叫反射

                  反射的英文中叫反省 (自省)

                   面向对象中的反省 指的是,一个对象必须具备,发现自身属性,以及修改自身属性的能力;

               2)反射的作用

                   一个对象在设计初期,可能考虑不够周全后期需要删除或修改已经存在的属性, 和增加属性

              反射大部分用于框架

               3)反射涉及到的方法

                      hasattr 判断是否存在某个属性

                      getattr 获取某个属性的值

                      setattr 新增或修改某个属性

                      delattr 删除某个属性

       反射案例

    class MY_CMD:
    
        def dir(self):
            os.system("dir")
    
        def ipconfig(self):
            os.system("ipconfig")
    
    cmd = MY_CMD()
    
    while True:
        name = input("请输入要执行的功能:")
        if hasattr(cmd,name):
            method = getattr(cmd,name)
            print(method)
            method()
        else:
            print("sorry this method is not exists....!")
    

      

  • 相关阅读:
    一文学会Go语言
    只用120行Java代码写一个自己的区块链
    精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界
    精通libGDX游戏开发-RPG实战-开发游戏的基本前提
    libGDX开发环境搭建-Android Studio 最新版
    linux下redis的最佳实践(Master-Slave)
    使用Redis实现高并发分布式序列号生成服务
    [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画
    [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
    [libgdx游戏开发教程]使用Libgdx进行游戏开发(10)-音乐和音效
  • 原文地址:https://www.cnblogs.com/xzcvblogs/p/10896538.html
Copyright © 2011-2022 走看看