6.5.1 多重继承
Python也支持多种继承形式。一个能继承多个基类的类定义如下:
class DerivedClassName(Base1, Base2, Base3):
.
.
.
大多数情况,最简单而言,你可以把从父类继承下来的属性查询看成是遵循深度优先,从左到右。
而不是在同一等级重复的同样类中执行两次。因此,如果一个属性没在派生类中找到,首先会在base1然后再...
分类:
编程语言 时间:
2014-05-07 13:12:31
阅读次数:
310
6.4 一些说明
数据属性可以重写同名的方法属性。这是为了避免在大型系统中产生问题的意外名称冲突。所以用一些减少冲突的常用方法是很有效果的。常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性。
数据属性就像和对象的普通用户一样可以被方法引用。换句话说,类不能用来实现纯净的数据类型。事实上,在python中不能强制数据隐...
分类:
编程语言 时间:
2014-05-04 09:20:39
阅读次数:
305
6.5 继承
当然,一门语言特性如果不支持继承那么名称类就失去了价值。子类继承父类的方法如下:
class DerivedClassName(BaseClassName):
.
.
.
名称BaseClassName必须定义在一个包含派生类定义的作用域中。在基类名称的位置上,其他随意表达式都是允许的、例如,当基类定义在其他模块中,这也是可用的。
class DerivedCl...
分类:
编程语言 时间:
2014-05-04 08:59:32
阅读次数:
364
6.3.3 实例对象
现在我们用实例对象做什么呢?实例对象唯一可用的操作就是属性引用。现在有两种合法的属性名称:数据属性和方法。
数据属性相当于smallTalk中的实例变量,C++中的数据成员。数据属性不需要申明。像局部连梁一样,当他们初次赋值的时候他们就存在了。例如,如果x是上面创建MyClass类的一个实例, 下面的代码块表示将会打印值16.这个值没有任何错误。
x.counter =...
分类:
编程语言 时间:
2014-04-29 13:15:21
阅读次数:
304
6.3 初识类
类引入一些新语法:三种新的对象类型和一些新的语义。
6.3.1 类定义语法
类定义的最简单形式如下:
class ClassName:
.
.
.
类定义和函数定义(def语句)一样,必须先执行然后才生效。(你当然可以把类定义放在if语句分支中或者嵌入在函数中)
在实际情况中,在类定义中的语句常常是方法的定义,但是其他语句也是允许的并且有时是很有用的...
分类:
编程语言 时间:
2014-04-29 13:14:23
阅读次数:
433
6.2.1 作用域和命名空间实例
下面的实例主要用来示范如何引用不同的作用域和命名空间,关键字global和nonlocalru如何影响变量绑定。
实例运行结果是:
After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: no...
分类:
编程语言 时间:
2014-04-28 10:46:42
阅读次数:
356
6.2 Python作用域和命名空间
在介绍类之前,首先我想告诉你一些关于python作用域的规则。类的定义非常巧妙地运用了命名空间,你需要知道范围和命名空间的工作原理以能全面了解接下来发生的。 顺便说一下,关于这节讲到的知识对于任何优秀的python程序员非常有用。
让我们开始以一些定义开始。
命名空间(namespace)是一个从名称到对象的映射。大多命名空间目前用Python字典实现的...
分类:
编程语言 时间:
2014-04-28 10:31:42
阅读次数:
309