PyCraft
进阶

类与对象(LeetCode 常用)

__init__、self、自定义比较 __lt__

类与 self

LeetCode 设计题、链表/树节点常用类。__init__ 是构造函数,self 代表当前对象。

加载代码编辑器中…

self 参数什么意思?

self 就是「当前这个对象」的引用。在类的方法里,你要操作「当前这个节点/这个实例」的属性,就要通过 self 来访问。

  • 第一个参数:类里定义方法时,第一个参数约定写成 self(名字可以改,但大家都用 self)。调用时不用传,Python 会自动把当前对象传进去。
  • self.xxx:表示「当前对象的属性」。例如 self.val = val 表示把参数 val 存到当前对象的 val 属性上;self.next = next 表示当前节点的「下一个」是谁。
  • 为什么要有 self? 因为同一个类会创建很多个对象(很多个 ListNode),方法里需要知道「现在处理的是哪一个」,所以用 self 指代当前这个。
加载代码编辑器中…

简单记:写类方法时第一个参数写 self,用 self.属性名 访问/修改当前对象的属性;调用时不用传 self。

二叉树节点

加载代码编辑器中…

自定义排序 lt

堆、排序需要比较时,实现 __lt__(self, other) 表示“小于”,即可用 sortedheapq

加载代码编辑器中…

常用魔术方法

  • __str__print(obj) 时用
  • __repr__:在解释器里显示用
  • __len__len(obj) 时用
加载代码编辑器中…