正在加载...

方法

方法是属于某一盏灯的一项工作。你写下 lamp.label(),这项工作就会运行,并交回 glow blue。括号是运行它的一部分。没有括号,这项工作就没有运行,屏幕上也不是 glow blue。label 用的是这盏灯里早已存好的那个词。它不会安装包,也不会建文件夹。label 下面缩进的几行就是这项工作。return 把词交回来,它自己不会把词写到屏幕上。

一盏灯做一项工作

python
class Lamp:
    def __init__(self, color):
        self.color = color
    def label(self):
        return "glow " + self.color
lamp = Lamp("blue")
print(lamp.label())

屏幕上显示 glow blue,glow 和 blue 之间有一个空格。label 用存好的颜色拼出这些词,再交回来。真正把它们写出来的是 print。没有 print 那一行,方法仍然会交回这些词,但屏幕上什么也不会出现。lamp.color 仍然是存好的 blue。lamp.label() 是在它前面加上 glow 的那项工作。两者的结果并不一样。

两盏灯,两个标签

python
class Lamp:
    def __init__(self, color):
        self.color = color
    def label(self):
        return "glow " + self.color
one = Lamp("blue")
two = Lamp("red")
print(one.label())
print(two.label())

屏幕上有两行:先是 glow blue,再是 glow red。one 和 two 是两盏灯。每个 label 只读自己那盏灯里存的词。做出红灯,并不会改动蓝灯。one.label() 仍然是 glow blue。Lamp 是模板,one 和 two 是对象。工作相同,每次存的词不同。

没有灯的 Lamp.label() 不在这两个程序里。模板自己没有存好的颜色,而这项工作需要一盏灯来读。那一行会停住,停住时的名字是 TypeError。None 不会被写出来,程序也不会继续往下走。你要先做出一盏灯,再在这盏灯上写括号。

下一页是继承。这一页只在一盏灯上运行一项工作,然后说明第二盏灯会保留它自己的词。

灯上的一项工作

lamp.label() 显示 glow blue。把词写出来的是 print,方法只负责交回。第二盏灯可以显示 glow red,而不改动第一盏。没有灯的 Lamp.label() 会以 TypeError 停住。下一页是继承。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
6
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部