如果我做了这样的函数:
class Counter:
def __init__(self):
self._count = 0
def count(self) -> int:
self._count += 1
return self._count
def reset(self) -> None:
self._count = 0
把这个放到python shell中:
>>> s = Counter
>>> s.count()
我的结论是:
TypeError: count() missing 1 required positional argument: 'self'
我做错什么了吗?我不明白为什么我要把一个对象本身传递给它自己的方法。我认为它是自动传递的,因为我使用句点访问方法。至少这就是(我记得,也许不正确)它是C++的,所以我觉得这对Python来说是没有意义的。我做错什么了吗?你知道吗
基本上,为什么我需要传递它s.count(s),而不是只传递s.count()。self不应该在周期之前初始化变量吗?你知道吗
您的代码有两个主要问题:
1)在类中的方法定义中,对
def count(self) -> int:
和def reset(self) -> None:
使用了无效语法,您会注意到我修改了->
和int
/None
。你知道吗2)实例化Class Objects应该使用函数表示法,因此
s = Counter()
而不是s = Counter
。你知道吗这两个问题已在下面的代码中修复:
这不会创建
Counter
类的实例。它将Counter
类赋给变量s
。这意味着您正试图在第二行中调用类本身的实例方法。你知道吗如果要创建
Counter
类的实例,应该编写:相关问题 更多 >
编程相关推荐