关于对Python面向对象的理解

说起面向对象(Object Oriented Programming)首先想到的就是三个词:封装、继承和多态。

封装: 目的是为了简化编程和提升安全性(标识出允许外部使用的所有成员函数和数据项)。

  • 属性封装
  • 方法封装

继承和多态: 顾名思义,继承就是子类可以获取父类的特性,实际上就是为了更好的进行代码复用,而多态是指基于不同的父类调用同一方法也可能有不同的执行逻辑,与这个相关的还有一个有趣的名词”鸭子模型“。

另外与面向对象对应的还有个面向过程(Process Oriented)。其中的区别下面有一个通俗的解释,可以做一个参考

面向对象是相对于面向过程的,比如你要充话费,你会想,可以下个支付宝,然后绑定银行卡,然后在淘宝上买卡,自己冲,这种种过程。但是对于你女朋友就不一样了,她是面向“对象”的,她会想,谁会充话费呢?当然是你了,她就给你电话,然后你把之前的做了一遍,然后她收到到帐的短信,说了句,亲爱的。这就是面向对象!女的思维大部分是面向“对象”的!她不关心处理的细节,只关心谁可以,和结果!

来源:知乎 链接

python中特殊方法和特殊变量总结

在研究一些python项目的源码时经常会看到一些特殊的方法和变量,比如两边双下划线__init__定义的方法,还有一些类中会有以双下划线__开头定义的变量,以及以单下划线_开头的定义的变量。这里对目前经常遇到的做一个记录

__method__:在class中有一些以双下划线开头和结尾的函数被称为特殊方法(Magic Method),更具体可以参考 官方文档

顺便说一下访问限制。如下(限制其实并不严格,主要靠自觉)

__:在类内部如果使用双下划线开头定义变量,那么这个变量就变成了私有变量(private),即这个变量只有在内部访问(并不是绝对控制,可以通过其他方法访问)

_:在类内部如果使用_开头定义变量,其实表示建议(表示可以从外部访问但最好不要访问)当成私有变量

JenkinsActiveChoices插件使用

之前使用过Jenkins的Active Choices Plugin插件,概述下当时我想实现的效果

  • 针对自定义选项支持多选
  • 在Job中点击构建是默认全部选中
  • 采用DSL构建 所以当时调研后就选择了这个插件,使用起来还不错。不过今天又遇到一个问题,记录一下