美文网首页学习学习之Python
如果你使用大量的全局变量,那么可能需要面对对象

如果你使用大量的全局变量,那么可能需要面对对象

作者: 刘小白DOER | 来源:发表于2021-09-04 11:52 被阅读0次

    在最近的python的数据分析实践中,笔者看到一句话,颇受启发!

    如果你使用了大量的全局变量,那么你可能需要面对对象。

    在实践中,回起以前做过的项目,以前写的东西确实存在很大的问题,发现有些项目代码写的很复杂臃肿。以前拿到需求,马上就开干,项目结构不清晰,这里需要就写一下,没有经过统一的规划。在存在大量的初始命令时,笔者以前一般通过两个方法来实现。

1、建立全局变量,在不同的子程序中调用这个全局变量;

2、通过建立带有常量赋值的子程序,在主程序中通过调用这个子程序。

    笔者以LabVIEW来示例。在存在很多底层函数时,以前笔者使用LabVIEW库来按照类别、功能等打包函数,然后在主程序中调用各个库中的方法,比如将操作串口的方法、操作仪表的方法、telnet方法、显示主、子面板等等。但是在库里面的函数没有存在很好的逻辑关系,特别是函数里面的常量问题再次修改的话可以设计到的子vi就比较多。

    那么就可以使用面向对象来实现。每个LabVIEW类包括一个数据簇(属性)和用于读写该簇的方法。下面是笔者针对以操作不同地址的三台发电机的问题,改为使用类lvclass来改写。类库和项目库(.lvlib)相似,不同的是,类库定义了新的数据类型。

    私有属性alternator_class.ctl,保存命令的格式

    方法init cmd.vi,初始化写入命令

    方法write cmd and read data.vi,发送命令并读取返回数据

    那么多台发电机就可以调用这个类来实现相同的功能,不同的命令在方法init cmd.vi中来实现和修改。LabVIEW类的数据是私有的,对于不是该类成员的VI来说是隐藏的。如需访问类的私有数据,必须创建方法,即创建该类的成员VI,通过成员VI中的函数对私有数据执行操作。封装就是将数据和方法合并到一个类中,类中数据仅可由类的成员VI访问。LabVIEW面对对象的编程实现数据封装,有助于实现模块化代码,可局部修改代码,而对代码其他部分没有影响。

    类中的数据是私有的,但成员VI却可以按不同的程度公开。

1、公共-任何VI都可将该成员VI作为子VI调用。

2、库内-只有同类中的VI、类的友元或类的友元库中的VI可以调用库内成员VI。

3、保护-仅该成员VI所在的类及其子类中的VI可以调用该成员VI。

4、私有-仅该成员VI所在类中的VI可以调用该成员VI。

5、未指定-仅当选中一个文件夹时,显示该选项。文件夹的访问范围未指定时,其访问范围默认为公共。

    关于面向对象与面向过程编程的区别,下面这一张图可以很好的说明。

    通过“继承”可在现有类的基础上创建新类。若创建一个新的LabVIEW类并将它设置为继承另一个类的数据及成员VI,这个新类将可使用它所继承的类中“公共”及“保护”型的成员VI,子类可覆盖或扩展这些成员VI。LabVIEW接口可以被视作是不带有私有数据控件的类,但这种微小的差异使得接口在软件架构中可以实现与类完全不同的目的。具体而言即接口可支持多重继承形式。

相关文章

  • 如果你使用大量的全局变量,那么可能需要面对对象

    在最近的python的数据分析实践中,笔者看到一句话,颇受启发! 如果你使用了大量的全局变量,那么你可能需要...

  • ES6 Symbol

    为啥需要 Symbol ES5 里面对象的属性名都是字符串,如果你需要使用人提供的对象,你对这个对象有哪些属性也不...

  • global

    >>100>>1 >>100>>100 全局变量默认可读,如果需要改变全局变量的值,需要在函数内部使用global定义

  • ES6新纪元上

    一、Symbol 为啥需要Symbol?ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,你对这...

  • 没有退路才能成功

    写作是一种倾诉,如果你有其他倾诉对象,可能就不需要用写作的方式。 写作是面对自己,和自己内心对话。如果你不敢面对自...

  • Symbol

    1. 介绍 1.1 为啥需要Symbol ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,...

  • 2019-04-22

    学习的本质是基于大量练习的对模仿对象的模仿。如果你没选好模仿对象,没有进行大量模仿式的练习,那么你的知识和技能,不...

  • Head First 设计模式 —— 05. 单例模式

    全局变量的缺点 如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好对象 P170 和 JVM 实现有关,有...

  • Vue 中 Select Option value 不能是对象

    vue中使用select时 如果使用 v-model 那么 option 值不能使用对象,需要将对象转换成字符串...

  • JS-删除全局变量

    如果你没有使用严格模式,并且给一个未声明的变量赋值。此时会创建一个全局变量。全局变量可以理解为全局对象的一个属性。...

网友评论

    本文标题:如果你使用大量的全局变量,那么可能需要面对对象

    本文链接:https://www.haomeiwen.com/subject/sttrwltx.html