python基础15-面向对象编程(3)

上篇我们说了类的基本概念,这篇我们谈谈类的一个很重要的概念-继承, 在工作中使用类继承非常常见,当我们编写一个类时并非每次都要从头实现一个类,如果你要实现的类在方法或属性另一个类里已经有了,这时候可以通过继承来自动 获得这个类的所有属性和方法,这个类就叫父类,继承父类的类我们叫子类,通过类的继承,可以让我们减少我们同一段代码要输入好几次的情况,Python允许子类继承多个父类,这种特性我们叫多重继承,这个不是python语言特性,c++也是一样,接下来让我们了解下如何通过代码的方式实现类的继承。

我们还用我们上次定义的Car类来说明继承关系, 代码如下:

这个类我加了一个方法,用来展示汽油用来信息, 现实中我们知道除了汽油,现在电动车也非常流行了,所以我们如果我们需要定义一个电动汽车的类,我们会发现同样在初始化类的时候也需要公司,品牌,生产时间必须的参数,因为这些信息在Car这个类在初始化的时候已经定义了,所以我们可以直接继承Car来实现我一个新的电动车的类,代码如下:

短短二行就实现了父类的继承,代码一会解释,主要是super函数,我们先看结果是否跟我们想的一样,因为根据继承的概念,如果子类继承了一个父类,就会获得父类所有的属性和方法,那接下来让我们看看是不是这样的:

打印出:

可以看到在我们子类Evcar中,我们并没有定义get_car_info这个方法,但我们一样可以直接使用,说明子类继承了父类的方法,直接调用了父类的方法打印了信息,这时候我们输出子类的__bases__属性(__bases__类属性包含了其父类的集合元组),如下:

显示父类是Car。

我们说回代码中的内容, 关于继承父类_方法,现在因为python版本出于2和3交替阶段,写法也有不同,汇总2个方法如下:

1、用super函数,这个函数的目的就是帮助程序员找出相应的父类,然后方便调用相关的属性和方法,在版本2中写法就是跟我上面的例子一样,在3中去掉了super函数中的2个参数,直接调用即可。

2、在子类中显示调用父类初始化,例如:上面的super函数行可以替换成这样:

上面我们了解到了子类和父类的概念,也了解了一个子类如何继承一个父类的属性和方法,接下来我们要看看如何覆盖父类的方法,那为什么要覆盖呢,因为有时候我们从父类中继承的一些方法,不一定能满足或适合子类使用,这时候子类就可以重新这个方法,来实现对父类方法的覆盖,例如我们的例子,petrol_used()这个方法显示不适合用在电动汽车上,那这时候我们可以在子类中重新这个方法,如下:

方法名词同父类相同, 这时候我们调用父类和子类同名的方法会得到如下信息:

从结果看子类的方法被运行了,实现了我们子类的方法覆盖了父类的方法。

关于类对基本内容就写到这里了,希望小伙伴们在了解了基本概念的基础上,多在项目中运用,逐步体会面向对象的编程思想,下篇我们谈一下python的并发编程,我们的基础内容就全部结束了,感谢大家支持。

 

Sublime text3 安装和配置

pycharm 实在是太大了,就启动就需要至少1G内存,无奈电脑配置太低,打算换一个编辑器了,今天安装Sublime text3,早就听说名声在外了,不多说,上手:

1、下载 ,http://www.sublimetext.com/3

我下的最新版本3143版,是个exe文件,直接双击安装即可,安装完后是未注册版本,未注册版就是会定时弹出来一个框让你输入授权码去购买,功能没啥问题,可以去购买,如果没钱就只能百度了。

2、安装完配置,第一个包是安装包管理功能,

打开view–>Show console,在底部输入如下代码:

安装有点慢,完成后重启Sublime3,如果在Perferences菜单下看到package settings–>package contro就说明安装成功了。

3、装好这个后基本完成工作的一半了,接下来开始安装插件。

crtl+shift+p 打开命令框,输入Install  然后选择Package Control ,会再出现一个对话框,在这里输入你要安装的插件名字即可。

接下来步骤一样,安装的插件有:

以下来源网络:

Anaconda

Anaconda 是一个终极 Python 插件。它为 ST3 增添了多项 IDE 类似的功能,例如:Autocompletion 自动完成,该选项默认开启,同时提供多种配置选项。
Code linting 使用支持 pep8 标准的 PyLint 或者 PyFlakes。因为我个人使用的是另外的 linting 工具,所以我会在 Anaconda 的配置文件 Anaconda.sublime-settings 中将 linting 完全禁用。操作如下: Sublime > Preferences > Package Settings > Anaconda > Settings – User: {"anaconda_linting": false}
McCabe code complexity checker 让你可以在特定的文件中使用 McCabe complexity checker. 如果你对软件复杂度检查工具不太熟悉的话,请务必先浏览上边的链接。
Goto Definitions 能够在你的整个工程中查找并且显示任意一个变量,函数,或者类的定义。
Find Usage 能够快速的查找某个变量,函数或者类在某个特定文件中的什么地方被使用了。
Show Documentation: 能够显示一个函数或者类的说明性字符串(当然,是在定义了字符串的情况下)

你可以在这里,或者通过 ST3 的 Package Settings: Sublime Text > Preferences > Package Settings > Anaconda > README 来查看所有这些特性。

Djaneiro

Djaneiro 支持 Django 模版和关键字高亮以及许多实用的代码片(snippets)功能。其中的 snippets 绝对是省时神器。你可以通过很少几个关键字就能创建许多常见的 Django 代码块比如 templates,models,forms,以及 views。请查看官方文档获取 snippets 列表。

我个人非常喜欢的以下两个用于创建 template 的代码片:输入 var 就可以新建 {{ }},而输入 tag 就能新建 {% %}。

requirementstxt

Requirementstxt 可以为你的 requirements.txt 文件提供自动补全,语法高亮以及版本管理功能。

MarkDown Editing

SublimeText不仅仅是能够查看和编辑 Markdown 文件,但它会视它们为格式很糟糕的纯文本。 这个插件通过适当的颜色高亮和其它功能来更好地完成这些任务。

Markdown Preview

Markdown Preview 可以用来预览和编译 markdown 文件。 这边文章的预览就是通过 mp完成的。

你可以打开 Package Manager 然后输入 Markdown Preview 来查看可用的命令:

Markdown Preview: Python Mrakdown: 在浏览器中预览
Markdown Preview: Python Mrakdown: 导出 HTML 文件
Markdown Preview: Python Mrakdown: 拷贝到剪贴板
Markdown Preview: Github风格Markdown: 在浏览器中预览
Markdown Preview: Github风格Markdown: 导出 HTML 文件
Markdown Preview: Github风格Markdown: 拷贝到剪贴板
Markdown Preview: 打开Markdown速查手册∏
一旦你完成转换,你之后的所有保存都会立即反映到转换的文件中。

OmniMarkupPreviewer

支持将标记语言渲染为 HTML 并在浏览器上实时预览,同时支持导出 HTML 源码文件。

支持的标记类语言:

Markdown
reStructuredText
WikiCreole
Textile
Pod (Requires Perl >= 5.10)
RDoc (Requires ruby in your PATH)
Org Mode (Requires ruby, and gem org-ruby should be installed)
MediaWiki (Requires ruby, as well as gem wikicloth)
AsciiDoc (Requires ruby, as well as gem asciidoctor)
Literate Haskell

Emmet

(前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具.

使用示例:

在编辑器中输入缩写代码:ul>li*5 ,然后按下拓展键(默认为tab),即可得到代码片段:

JsFormat

代码格式化

  • JsFormat 基于 JS Beautifier,可以帮助你自动格式化 JavaScript 和 JSON。这对于阅读代码是非常有用的。
  • 快捷键:Ctrl + Alt + f 或者,你也可以使用菜单栏。
  • 可定制喜欢的格式:在 SublimeText 3 中 Preferences -> Package Settings -> JsFormat -> Settings – Default 可以调整这些配置。

jQuery:JQuery的API代码片段

我知道目前在很多地方 jQuery 看似已经落伍了,但是如果你不是建立一个交互性很强的网站或者你只是想在已有应用上添加功能,它仍然是非常有用的。

比如,输入 $.a就可以让我选择$.ajax(),然后自动扩展成以下代码:

JavaScript Completions

js代码补全。

CSSComb 
CSS属性的顺序一般不重要,因为无论何种顺序浏览器都能正确渲染。但排序所有的属性还是有助于代码的整洁

SideBarEnhancements

SideBarEnhancements扩展了侧边栏的菜单选项,整体加速你的工作流程,像“New File”和“Duplicate”这样的必须选项应该成为ST3开箱即用的一部分,仅仅是“Delete”选项就是它很值得一用,这个功能只是简单的将文件移到回收站,这可能看起来很平凡,但是如果你不是使用它来删除文件,恢复文件将变得十分困难,除非你使用版本控制系统。

BracketHighlighter

括号,高亮显示

FTPSync:同步文件到Linux环境

最后是安装了sftp这个插件,没用上面的,stp配置比较简单,就是会提示注册,网上找到如下:

取消输入时的小白框在,在user-setting里加入:

{“anaconda_linting”: false}

就这么多吧,第一次装感觉很麻烦,装的插件太多,以下是删除。

移除插件

      有时候我们需要移除自己不想要的插件,具体操作如下:快捷键 Ctrl+Shift+P,在对话框中输入“remove”,选择“Package Control: Remove Packages”。

然后在出现的插件列表中点选你要移除的插件。

参考:

http://blog.csdn.net/liujie19901217/article/details/51042343

http://www.jianshu.com/p/269642c54d2c

http://www.cnblogs.com/wind128/p/4409422.html

http://python.jobbole.com/81312/

日常使用:

跳出自动补全的括号外,按回车即可,加入到key-map user setting里:

 

批量注释:

多行选择后按下ctrl+/

批量缩进:感觉跟Pycharm一样,

 

 

使用Sublime Text时unable read project问题的解决方法

然后以后每次重新打开sublime text都会弹出这样的对话框,解决的办法是

1、删除文件夹C:\Users\Administrator\AppData\Roaming\Sublime Text 3\Local下的两个文件session和seesion.sublime_metrics.

2、关闭sublime text再重新打开就OK啦~

 

这个方法貌似没用,:

解决办法:

在C:\Users\Administrator\AppData\Roaming\SublimeText 3\Packages\User目录下建立一个名为Preferences.sublime-project的文档

文档内容为

关闭软件重新打开就OK了-

另一个问题:

在执行CTags: Rebuild Tags时出现如下乱码。

出现乱码的原因其实是sublime text找不到ctags.exe。所以需要配置CTags的配置文件,

下载ctags可执行程序,路径为http://prdownloads.sourceforge.net/ctags/ctags58.zip,解压到一个目录,例如:e盘下,然后复制

配置:sublime text 3:Preferences->Package settings->CTags->Settings-Default文档里的内容全部复制到 Settings-User里,并修改如下配置:

“command”: “E:\\ctags58\\ctags.exe”,

 以上这些都完成后,t3是不能运行python脚本的,并且如果打开控制台,会发现使用python3的语法没问题,如果是2的语法会报错,当写完后按ctrl+b键,在左下角会出现“ no build system” 提示,咋办呢?

这篇文章给了比较详细的解释,看完后我感觉简直就是像我问的一样:

https://stackoverflow.com/questions/22439238/sublime-text-3-python-build-system-confusion

点tools–bulid system–new bulid system会出现一个空白文本输入,

保存到C:\Users\administrator\AppData\Roaming\Sublime Text 3\Packages\User\python2710.sublime.build

然后回到tools–buld system下,可以看到python2这个选项,不过我没选择这个,我选的Anaconda python build ,然后编写一个文件,ctrl+b,就可以运行了。

 

 

Gitlab 安装

 

选择系统版本:

https://about.gitlab.com/downloads/#centos6

 

1、安装配置依赖

sudo yum install curl openssh-server openssh-clients postfix cronie

sudo service postfix start

sudo chkconfig postfix on

sudo lokkit -s http -s ssh

2、加安装包到安装的server

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bashsudo yum install gitlab-ce

自己之定义版本:

curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/6/gitlab-ce-XXX.rpm/downloadrpm -i gitlab-ce-XXX.rpm

3、配置

sudo gitlab-ctl reconfigure

4、浏览登录

 

On your first visit, you’ll be redirected to a password reset screen to provide the password for the initial administrator account. Enter your desired password and you’ll be redirected back to the login screen.

The default account’s username is root. Provide the password you created earlier and login. After login you can change the username if you wish

 

配置,重启:

 

主机IP更换后需要修改:

vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml

HOST  XXX

 

修改后重启gitlab,命令如下:

 

gitlab-ctl restart

sleep 3

gitlab-ctl restart nginx

sleep 1

gitlab-ctl status

Centos7 免费SSL证书Let’s Encrypt(certbot)安装

 

 

Centos 7.2

sudo yum install epel-release

sudo yum install certbot

修改你的服务器配置,在server模块添加:

 

重启nginx

sudo certbot certonly –webroot -w /usr/local/nginx/html/ -d www.mindg.cn

配置证书:

 

nginx –s reload

配置自动更新:

302 * *1 /usr/bin/certbot renew >>/var/log/le-renew.log

 

Aws import ssl 证书

购买的证书内容:

 

证书区分区域,只有在某个RGION导入的证书这个region才可以看到。

ssl

 

Aws need to import form:

ssl2

这三个框分别对应上面三个文件是:

body是cer文件,key是server.key,chain是中级证书