自定义函数引发异常

时间:2020-04-20 14:43:20

标签: python python-3.x list oop

所以我最近一直在使用列表,并且试图使一个特殊的类工作,所以我写了一个for循环来测试基本功能,但这只是给了我这种追溯:

Traceback (most recent call last):
  File "C:\Users\User\Desktop\nice code\v2.py", line 13, in <module>
    if Lenlist == len.lenList(len.listLen(List=len.list(list=List().list()))): print(Lenlist);
  File "C:\Users\User\Desktop\nice code\v2.py", line 3, in lenList
    def lenList(self, list=list): return len(list);
TypeError: 'List' object is not callable

以下是您的来源:

class List:
  List = list('list');
  def lenList(self, list=list): return len(list);
  def listLen(self, List=len): return list(List);
  def lenlist(self, len=list): return self.lenList(list=len);
  def list(self, list=list): return self.List;
  def listlen(self, len=len): return self.list(list=len);
len = List();
Lenlist = 0;
for Len in len.listLen(List=len.list(list=List().list())):
  if Len in list(len.listLen(List=len.list(list=Len))):
    Lenlist += list(len.listLen(List=len.list(list=Len))).count(Len);
    if Lenlist == len.lenList(len.listLen(List=len.list(list=List().list()))): print(Lenlist);

我期望的是打印出List.List的长度。我已经尝试用关键字替换所有位置参数。

1 个答案:

答案 0 :(得分:0)

这里有一些重要的注意事项,您需要遵循

  1. 始终尽量避免覆盖python关键字或预定义函数(例如len)

  2. 在类中没有与类名同名的变量名

我看到的第一个问题是您已经将lenList中的len覆盖了;您将无法获得所需的输出 我在您的代码中发现的第二个问题是lenList函数试图返回len(list) list是一个python预定义的类,因此len找不到任何东西

我对您的代码做了一些更改,现在可以显示4

class List:
  List1 = list('list');
  def lenList(self, list=list): return len(self.List1);
  def listLen(self, List=len): return list(self.List1);
  def lenlist(self, len=list): return self.lenList(list=len);
  def list(self, list=list): return self.List1;
  def listlen(self, len=len): return self.list(list=len);
len1 = List();
Lenlist = 0;

for Len in len1.listLen(List=len1.list(list=List().list())):
  if Len in list(len1.listLen(List=len1.list(list=Len))):
    Lenlist += list(len1.listLen(List=len1.list(list=Len))).count(Len);
    if Lenlist == len1.lenList(len1.listLen(List=len1.list(list=List().list()))): print(Lenlist);