首页 > 解决方案 > 垃圾邮件类:numInstances = 0 def __init__(self):

问题描述

class Spam:
    numInstances = 0
    def __init__(self):
        Spam.numInstances = Spam.numInstances + 1
    def printNumInstances():
        print("Number of instances created: %s" % Spam.numInstances)

x = Spam()
x.printNumInstances()

这给了我这个错误:

Traceback (most recent call last):                                                                                            
  File "main.py", line 9, in <module>                                                                                         
    x.printNumInstances()                                                                                                     
TypeError: printNumInstances() takes 0 positional arguments but 1 was given

我不明白为什么。

我猜它应该打印“1”。

标签: python

解决方案


您已声明printNumInstances为静态方法,但您将其作为实例方法调用。

我想你想要Spam.printNumInstances()

(虽然它应该是一个类方法,但如果我正确理解代码,请参阅:@staticmethod 和@classmethod 有什么区别?


推荐阅读