《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 10 章 答案
答案仅供参考,若有错误欢迎指正
判断对错
- 通过调用构造方法创建新对象。
- 位于对象中的函数称为实例变量。
- Python 方法定义的第一个参数称为 this。
- 一个对象可能只有一个实例变量。
- 在数据处理中,有关人或事物的一组信息称为文件。
- 在 Python 类中,构造方法称为__init__。
- 文档字符串与注释是一样的。
- 一个方法终止后,实例变量就会消失。
- 方法名称应始终以一条或两条下划线开始。
- 从类定义之外直接访问实例变量是不好的风格。
解答
- T
- F
- F
- F
- F
- T
- F
- F
- F
- T
多项选择
- Python 保留字________开始了类定义。
a. def
b. class
c. object
d. init - 具有四个形式参数的方法定义通常在调用时有________个实际参数。
a. 3
b. 4
c. 5
d. 看情况 - 方法定义类似于________。
a. 循环
b. 模块
c. 导入语句
d. 函数定义 - 在一个方法定义中,可以通过表达式________访问实例变量 x。
a. x
b. self.x
c. self [x]
d. self.getX() - 定义一个类的“私有”方法,Python 的惯例是用________开始方法名称。
a. “private”
b. 井号(#)
c. 下划线(_)
d. 连字符(-) - 将细节隐藏在类定义中,术语称为________。
a. 模糊
b. 子类化
c. 文档
d. 封装 - 如果包含在________之中,Python 字符串字面量可以跨越多行。
a. "
b. ’
c. “”"
d. \ - 在 Button 控件中,实例变量 active 的数据类型是________。
a. bool
b. int
c. float
d. str - 以下________方法不属于本章的 Button 类的一部分。
a. activate
b. deactivate
c. setLabel
d. clicked - 以下________方法是本章的 DieView 类的一部分。
a. activate
b. setColor
c. setValue
d. clicked
解答
- b
- a
- d
- b
- c
- d
- c
- a
- c
- c
讨论
- 解释实例变量和“常规”函数变量之间的相似性和差异。
解答
- 实例变量存在于对象中,只要对象存在,就会保持其数值。它们可以用点符号来访问。
- 普通变量不使用点符号访问,当方法终止时,普通变量就会消失。
- 根据类定义中可能找到的实际代码说明以下内容。
a.方法
b.实例变量
c.构造方法
d.取值方法
e.设值方法
解答
a. 方法是一个 "住在 "对象中的函数。一个方法的定义看起来像一个类中的函数定义。方法的第一个参数是self,它指的是被应用于该方法的对象。
b. 实例变量是一个 "住在 "一个对象里面的变量。在语句
self.value = 1
中,value
是一个实例变量,其值被设置为1。c. 构造方法是构造一个对象的方法。在 Python 中,它是一个名为
__init__
的方法。d. 取值方法是返回一个变量的值的方法,例如:
def getValue(self): return self.value
e. 设值方法是一种改变一个或多个实例变量值的方法,例如:
def roll(self): self.value = randrange(1,7)
- 显示以下无聊的程序产生的输出:
class Bozo:
def __init__(self, value):
print("Creating a Bozo from:", value)
self.value = 2 * value
def clown(self, x):
print("Clowning:", x)
print(x * self.value)
return x + self.value
def main():
print("Clowning around now.")
c1 = Bozo(3)
c2 = Bozo(4)
print(c1.clown(3))
print(c2.clown(c1.clown(2)))
main()
解答
Clowning around now.
Creating a Bozo from: 3
Creating a Bozo from: 4
Clowning: 3
18
9
Clowning: 2
12
Clowning: 8
64
16
注意:可能是书的版本问题,原书中这题的main()函数里后两个print用的是Python2里的语句,与第一个print()函数不一致,需改成Python3里的print()才能正常运行。
编程练习
未完待续……