Dive into Python 点滴

1. __init__ 方法是可选的,但一旦你定义了, 就必须记得显示调用父类__init__ 方法(如果它定义了的话)。这样更是正确的:无论何时子类想扩展父的行为,后代方法 必须在适当时机,使用适当的参数,显式调用父类方法。


2. 下划线
- _single_leading_underscore: weak "internal use" indicator.  E.g. "from M import *" does not import objects whose name starts with an underscore.

- single_trailing_underscore_: used by convention to avoid conflicts with Python keyword, e.g. Tkinter.Toplevel(master, class_='ClassName')

- __double_leading_underscore: when naming a class attribute, invokes name mangling (inside class FooBar, __boo becomes _FooBar__boo; see below).

- __double_leading_and_trailing_underscore__: "magic" objects or attributes that live in user-controlled namespaces.  E.g. __init__,   __import__ or __file__.  Never invent such names; only use them as documented.


3. Python 没有任何形式的函数重载。一个 __init__ 方法就方法就是一个 __init__ 方法,不管它有什么样的参数。每个 类只能一方法,不管它有什么样的参数。每个类只能拥有一个__init__ 方法方法,并且如果一个子类拥有__init__ 方法,它总是覆盖父类的__init__ 方法,甚至子类可以用不同的参数列表来定义它。


4. 专用方法产生的原因:它们提供了一种,可以将非调语法映射到方法调用上。


5. 在 Java 中,通过使用 中,通过使用 中,通过使用 str1 == str2 可以确定两个字符串变量是否指向同一块物理内存位置。这叫做对象同一性,在 Python 中写为 str1 is str2。在 Java 中要中要比较两个字符串值,你要使用str1.equals(str2);在 Python 中,你要使用str1 == str2。


6. 在 Java 中,静态变量 (在 Python 中叫类属性) 和实例变量 (在 Python 中叫数据属性) 两者都是紧跟在类定义之后的 (一个有 static 关键字,一个没有 )。在 Python 中,只有类属性可以定义在这里,数据属性定义在 __init__ 方法中。


7. 与大多数的语言不同,一个 Python 函数,方法或属性是私有还公完全取决于它的名字.如果一个 Python 函数,类方法或属性的名字以两个下划线开始(但不是结 束),它是私有的;其它所都公有的。


8. 如果你要在正则表达式和编写循环间抉择,选择正则表达式。正则表达式因其是以 C 语言编译的可以本能地在你计算机上运行,你的循环却以 Python 编写需要通过Python 解释器运行。

如果你需要在正则表达式和字符串方法间抉择,选择字符串方法。它们都是以C 编译的,所以选取简单的。

字典查找的通常应用很快,但是 string.maketrans 之类的特殊函数和isalpha() 之类的字符串方法更快。如果 Python 有定制方法给你用,就使它吧!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值