进阶
类与对象(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) 表示“小于”,即可用 sorted、heapq。
加载代码编辑器中…
常用魔术方法
__str__:print(obj)时用__repr__:在解释器里显示用__len__:len(obj)时用
加载代码编辑器中…