#pragma section-numbers off = 7-7 fileinfo.xml 对象和面向对象 = <> == 5.1 概览 == `pass` == 5.2 使用 from module import 导入模块 == 1. `Para 3`:添加了译注,指出文中的错误(和 Mark 联系上后移除) == 5.3 类的定义 == 1. `例5.4, (1)`:把原来的译注移到脚注里面去了 1. `例5.4下, 提示`:不像在 Java 中有一个特殊的'''像''' extends '''的''' {X} 关键字。 1. `例5.5`:初始化 FileInfo '''Class''' (!) 没有翻译?! (./) 类 1. `例5.5, (2), Line -1`:……但 `__init__` 是在 Python 中你可以得到的最接近构造函数的东西,并且它也扮演着非常'''相同''' 的角色。 (./) '''相似''' 1. `例5.5, (4)`:`__init__` 方法可以接受任意'''个数'''的参数,就像函数一样,参数可以用缺省值定义,可以设置成对于调用者可选。<
> (./) `__init__` 方法可以接受任意'''数目'''的参数,就像函数一样,参数可以用缺省值定义,'''即'''可以设置成对于调用者可选。 1. `例5.6, (1)`:Python 不是这样,你必须显示地调用在父类中的'''适合''' 方法。 (./) '''合适''' == 5.4 类的实例化 == 1. `Para 1`:……'''为了'''对类进行实例化,只要调用类''',好像它是一个函数'''……<
> (./) '''要'''对类进行实例化,只要调用类'''(就好像它是一个函数)'''…… 1. `例5.7, (4)`:修正一处格式化错误(不再列出)。 1. `例5.8, (1)`:然后函数结束 {i} ^时^ 没有释放 f == 5.5 探索 UserDict:一个封装类 == 1. `Para 1`:如你所见,FileInfo 是一个'''像字典一样动作'''的类。<
> (./) 如你所见,FileInfo 是一个'''有着像字典一样的行为方式'''的类。 1. `例5.9, (5), Line -1`:你可以用这种语法,或者可以在后面的行'''拥有'''缩近代码…… (./) '''写下''' 1. `例5.9下, Para 1`:一个类可以有同名的多个方法,但这些方法或者是参数个数不同,'''或''' 参数的类型不同。 (!) 为保持一致, (./) '''或者是''' 1. `例5.9下, Para 2`:''Guido, the original author of Python, explains method overriding this way: "Derived classes may override methods of their base classes. Because methods have no special privileges when calling other methods of the same object, a method of a base class that calls another method defined in the same base class, may in fact end up calling a method of a derived class that overrides it. (For C++ programmers: all methods in Python are effectively virtual.)" If that doesn't make sense to you (it confuses the hell out of me), feel free to ignore it. I just thought I'd pass it along.''<
> Python 的原作者 Guido 是这样解释方法覆盖的 “子类可以覆盖父类中的方法。因为方法没有特殊的优先级设置,在调用同一对象的另外方法时,父类中一个方法对另一个同类中的方法的调用,可能其实调用到的却是一个子类中覆盖父类同名方法的方法。(对于 C++ 程序员,所有的 Python 方法都非常有效)” 如果你不明白(它另我颇感困惑),不必在意。我想我要跳过它。<
> (!) 明显这位兄台没有理解 Guido 的话,也不懂 C++。<
> (./) Python 的原作者 Guido 是这样解释方法覆盖的:“子类可以覆盖父类中的方法。因为方法没有特殊的优先级设置,父类中的一个方法在调用同类中的另一方法时,可能其实调用到的却是一个子类中覆盖父类同名方法的方法。(C++ 程序员可能会这样想:所有的 Python 方法都是虚函数。)”如果你不明白(它另我颇感困惑),不必在意。我想我要跳过它。<
> (./) 同时添加了一段译注,帮助读者理解。 1. `例5.10, (1), Line -1`:'''在你忘记的情况下''' ,字典的 clear 方法删除它的所有关键字和关键字相应的值。 (./) '''你可能已经忘了''' 1. `例5.10, (3)`:我们使用 `__class__` 属性来查看'''是否 self 是''' 一个 UserDict…… (./) '''self 是否是''' 1. `例5.10, (4), Line -1`:'''是否你'''想到要自已研究它了呢? (./) '''你是否已经''' 1. `例5.10下, Para 1`:UserDict 类'''出色于'''模仿字典。 (./) UserDict 类'''能十分出色地'''模仿字典。 == 5.6 专用类方法 == 1. `Para 1`:除了普通的类方法,'''还有一些'''对于 Python 类可以定义的专用方法。<
> (./) 除了普通的类方法,对于 Python 类'''还有一些'''可以定义的专用方法。 1. `例5.14上, Para -1, Line -1`:它还要在文件自身内进行搜索 MP3 的标记然后填充一整套关键字'''集合''' {X} 。下面的例子将展示其'''如何工作'''。 (./) '''工作方式''' 1. `例5.14, (1)`:注意我们的 `__setitem__` 方法严格按照 ^与^ 父类方法相同的形式进行定义。 1. `例5.14, (4)`:注意,我们在调用直接父类,FileInfo,尽管它没有'''一个''' {X} `__setitem__` 方法。没问题,因为 Python 将会沿着父类树走,直到它找到一个'''有着''' 我们正在调用方法的类,…… (./) '''拥有''' 1. `例5.15, (2)`:关键字触发了 MP3FileInfo 上的 `__setitem__` 方法(^而^ 不是 UserDict ^的^) == 5.7 高级专用类方法 == 1. `例5.16下, 注解`:关于 Java 的技术评注翻译了两次。合并为一次。 1. `注解下, Para 2`:任何类可以表现得像一个序列,只要'''通过''' {X} 定义 `__getitem__` 方法。 1. `同上`:并且如果你的类表现 ^为^ 拥有类似长度的东西…… 1. `进一步阅读上`:允许你在类实例上进行加,减,'''和''' 执行其它算数操作。 (./) '''以及''' == 5.8 类属性介绍 == 1. `例5.17, (2)`:它'''是''' {X} 在创建任何类实例之前就有效了。 1. `例5.17下`:在 Java 中,静态变量和实例变量两者 {i} ^都^ 是紧跟在类定义之后定义的…… 1. `同上`:到'''后面''' ,它只会把你(或其它人)搞乱。 (./) '''最后''' == 5.9 私有函数 == `pass` == 5.10 小结 == 1. 子类化 UserDict 来定义'''作为''' 像字典的类 (./) '''行为''' == 5.-1 反馈 ==