在调用类方法时被迫传递一个对象 - 我做错了吗?

use*_*886 4 python class

如果我做了这样的功能:

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
Run Code Online (Sandbox Code Playgroud)

把它放在python shell中:

>>> s = Counter
>>> s.count()
Run Code Online (Sandbox Code Playgroud)

我最终得到了这个:

TypeError:count()缺少1个必需的位置参数:'self'

难道我做错了什么?我不明白为什么我必须为自己的方法传递一个对象本身.我认为它是自动传递的,因为我使用句点访问该方法.至少这是(我记得,也许是错误的)它在C++中是如此,所以对我来说这对python来说是没有意义的.难道我做错了什么?

基本上,为什么我需要传递s.count(s)而不是s.count().在周期之前,自己是否应该已经初始化为变量?

Jim*_*Jim 9

s = Counter
Run Code Online (Sandbox Code Playgroud)

这不会创建Counter类的实例.它将Counter类分配给变量s.这意味着您尝试在第二行中调用类本身的实例方法.

如果要创建Counter类的实例,则应编写:

s = Counter()
Run Code Online (Sandbox Code Playgroud)