python3仿leetcode官方类ListNode定义。(解决调试代码报错: name 'ListNode' is not defined//ListNode' object has no attribute 'val'.)

python3仿leetcode官方类ListNode定义。(解决调试代码报错: name 'ListNode' is not defined//ListNode' object has no attribute 'val'.)

关于ListNode定义

解决了代码调试代码报错:

代码报错: name 'ListNode' is not defined//ListNode' object has no attribute 'val'.

原因:估计leetcode上面平台调试代码的时候启用了自己的一些库文件。 在本地ied调试的时候要加上ListNode的类定义(模仿官方的功能写的)。

类的代码添加:

class ListNode():

def __init__(self, val):

if isinstance(val,int):

self.val = val

self.next = None

elif isinstance(val,list):

self.val = val[0]

self.next = None

cur = self

for i in val[1:]:

cur.next = ListNode(i)

cur = cur.next

def gatherAttrs(self):

return ", ".join("{}: {}".format(k, getattr(self, k)) for k in self.__dict__.keys())

def __str__(self):

return self.__class__.__name__+" {"+"{}".format(self.gatherAttrs())+"}"

不过就算我们定义了这个类,在本地调试的过程中,我们传参的形式还是 list。但是在 leetcode 提交代码并不是,而是应该官方通过接口将我们传入的[1,2,3]list 形式参数转化成了 ListNode 了。

所以我们还要在本地测试之前添加判断参数形式的代码

if isinstance(l1,list):

l1 = ListNode(l1)

l2 = ListNode(l2)

我们来看看 vscode 调试打印的效果:

if __name__ == "__main__":

test = Solution()

print(test.addTwoNumbers([1,3],[2,1,3]))

调试结果:(和官方定义得那个输出是一样的)

f:/Leetcode/2.两数相加.py

ListNode {val: 3, next: ListNode {val: 4, next: ListNode {val: 3, next: None}}}

相关文章

365一直提款维护中 漁業問答

漁業問答

⏱️ 09-30 👁️ 6884
365bet官网欧洲 八英里是什麼意思

八英里是什麼意思

⏱️ 10-01 👁️ 9195