Python 编程

类与对象:给数据装上功能

10 分钟

类是把数据和行为捆在一起:第一章用字典存学生信息、用函数处理它——信息和操作分家。类把它们装进一个包裹:

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def greet(self):
        return '我是' + self.name

init 是「出厂设置」——创建时自动执行,把姓名年龄装进对象;greet 是对象自己会做的事。s = Student('小明', 14) 造出一个具体学生,s.greet() 让它打招呼。

类比:类是图纸,对象是实物。「狗」这个类规定了有名字、会叫;你的狗「旺财」是一个对象,邻居的「来福」是另一个——同一张图纸,各自的实例。

为什么必须懂类:《动手学深度学习》里每个模型都是类——net = nn.Sequential() 创建模型对象,net(X) 是调用它,net.parameters() 是取它的数据。全书就是「定义类的蓝图、创建对象、调用方法」这三步的循环。看懂类,d2l 的代码结构就全通了。

self 是什么:方法的第一个参数 self 指「我自己这个对象」——self.name 是「我的名字」,用来区分不同对象各自的属性。Python 规定它必须写在第一个,调用时却不用传,Python 自动填上。

常见误区:调用方法忘加括号——s.greet 拿到的是「方法本身」,s.greet() 才是「让它执行」。

练一练:写一个 Dog 类,有名字属性,会 bark() 返回「汪汪」,造两只狗分别叫它们 bark。

小纸条

写一个 Dog 类并造两只狗分别叫

登录 后可看答案