Python new 类方法和 init 实例方法以及单例模式的简单讨论

Python 中的类都是单例模式? 有些人肯定会对这个问题感到奇怪,这里先不做回答,我们先来看看 __new__ 和 __init__ 方法。 __new__ 属于新式类,即属于object 类。它是一个静态方法,但是其第一个参数必须是一个类(cls),这有点像一个 classmethod。该特殊方法被调用时,会创建类(cls)的一个新实例并返回,实例被创建后解释器会将该实例以及其它的参数传递给该实例的初始化函数 __init__,以对实例进行初始化。 所以,__new__ 方法是一个类方法,用于创建一个实例,而 __init__ 方法是一个实例方法,用于初始化一个实例。 __ne...

阅读更多

Git 标签(tag)简介与使用

Git 可以对某一时间点上的版本打上标签。在做版本发布的时候经常这么做。Git 使用的标签有两种类型: 轻量级的(lightweight) 和 含附注的(annotated)。 轻量级标签:就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。 含附注标签:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。 总结的说就是轻量级标签是一个引用,附注标签是一个独立的对象。一般建议使用附注标签,以保留相关详细信息。 常用命令: 列出所...

阅读更多

愿你出走半生,归来仍是少年

我在车站等了五个小时的车写下此文,原因是我买错了车票。其实算不上是买错了,只是车票上的车站不是我想要买的那个车站。车票是提前一个月定订的,如果我注意一下,就不至于会去错车站,以至于来不及到另一个车站去乘车。手机在路途中坏了,要不然以我如此谨慎的脾性,应该能发现问题。 你不得不承认,即使,再小心翼翼,也会犯错! 有时候,因为一些错误,我们浪费了宝贵的时间、精力和钱财。每次犯错,我都试图原谅自己,以让自己好受些,只是在心里告诉自己下次不要再犯。可是,即使你能避免不犯同样的错误,但也避免不了会犯其他的错误。 我竟然过了几天没有手机的日子。不做低头族,自己就好像是一个异类一样。在人群中,好像...

阅读更多

愿你回想起草原,内心依然辽阔

你觉得要发生的事,有时候是必然会发生的,可还是侥幸的希望一切都能好。曾经我总会对一个人说,不要选择逃避,勇敢一些,去面对。可是,同样的话,能安慰别人,却安慰不了自己。是的,有时候,我们都在逃避! 还是没有忍住,要去知道一些事的结果,只是已不明了心里是何种心态。不管怎样,眼角的泪水都没有藏住,没能阻止它流出来。 我开始读龙应台的“人生三书”。有一个人曾经总是跟我提起龙应台,提到她的教育理念,我还以为她是一个了不起的教育家。然而,她只是用生风的笔触记录了她的人生。从初为人母,怎样让孩子快乐的成长,怎样教孩子去认识这个世界乃至宇宙。一定要告诉你的孩子,慢慢来,一定要告诉他,灰姑娘的故事...

阅读更多

Python 编码风格参考

代码除了用来运行外,更多的是用来读。为了是代码的可读性更强,很多编程语言都有自己的编码规范。规范的制定是为了保持代码的一致性,以使代码更美观和易读。代码应该怎么样排版和编写并不是绝对的,所以一些地方会有争议。有时风格指南并不适用,最重要的知道何时不一致。当你无法判断该怎么做时,应该所参考下其他的例子。 本文仅是一个 Python 编码风格的参考,并不是一个规定,规定必须要这么去做。本文的目的应该是起一个指导作用,指导开发者去写更易读的代码。 一、代码编排 主要是缩进与空行的排版: 1、使用 4 个空格进行缩进(编辑器都可以完成此功能),不推荐使用制表符,更不能混合使用制表符和空...

阅读更多

Jupyter Notebook 快捷键使用指南

Jupyter Notebook 是一个交互式笔记本程序, 其有丰富的快捷键来便捷的完成工作。Notebook 有两种键盘输入模式。即命令模式和编辑模式,这与 Vim 有些类似。在编辑模式下,可以往单元中键入代码或文本,此时单元格被绿色的框线包围,且命令模式下的快捷键不生效。在命令模式下,可以用快捷键命令运行单元格,移动单元格,切换单元格编辑状态等等,此时的单元格被灰色的框线包围,且编辑模式下的快捷键不生效。 从命令模式进入编辑模式需按 Enter 键,从编辑模式切换到命令模式需按 Esc 键。 以下两表分别是对命令和编辑两种模式下快捷键的简单说明: 命令模式快捷键(按 Esc 键...

阅读更多

Python 模块简介 -- itertools

Python 标准库模块 itertools 提供了更加方便灵活的迭代器工具。 无限迭代器 itertools.count count(start=0, step=1) 创建一个迭代器,生成从 n 开始的连续整数,如果忽略 n,则从 0 开始计算。示例: In [2]: for n in itertools.count(): ...: if 100000 < n < 100010: ...: print n ...: if n > 1000000: ...: break ...: ...

阅读更多

Python 中的 if __name__ == '__main__' 该如何理解

这个问题来自于知乎用户的提问,当时看到这个问题,我只是做了下简单的回答。后来我发现,对于很多人来说,更准确的说应该是大部分的 Python 初学者,对这个问题理解的不是很深刻。所以这里我来做下总结,并试图把这个问题说明白。 程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。 ...

阅读更多