类垃圾邮件:numInstances=0 def\uuu init\uuuu(self):

2024-05-26 22:58:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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”。你知道吗


Tags: ofinstancesselfnumbermostinitdef错误
3条回答

您需要在“printNumInstances()”方法中添加“self”。你知道吗

def printNumInstances(self):
    .....

见下文

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

x = Spam()
x.printNumInstances()

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

我想你想要Spam.printNumInstances()

(虽然它应该是一个classmethod,但如果我正确理解了代码,请参阅:What is the difference between @staticmethod and @classmethod?

相关问题 更多 >

    热门问题