关于python的__len__函数问题

class Echo():
    def __init__(self, name):
        self.name = name
        print("Hello {}!".format(name))
    def __len__(self):
        n=0
        name=self.name
        for i in name:
            if i.isupper()==True:
                n=n+1;
        print("Hello {}!".format(n))
s = input()
echoA = Echo(s)
len(echoA)

想问一下各位,为何会报这个错'NoneType' object cannot be interpreted as an integer

阅读 5.4k
3 个回答

定义魔术方法 def __len__(self) 时,需要返回一个数值,,,即 __len__() should return >= 0。。你这里没有显示使用 return 语句,所以默认返回 None

>>> class Echo():
...     def __init__(self, name):
...         self.name = name
...         print("Hello {}!".format(name))
...     def __len__(self):
...         n=0
...         name=self.name
...         for i in name:
...             if i.isupper()==True:
...                 n=n+1;
...         return n
...
>>> s = input()
WWW.OS373.CN
>>> echoA = Echo(s)
Hello WWW.OS373.CN!
>>> len(echoA)
7
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题