Python 为什么它会打印;创建的实例数:0“;而不是",;创建的实例数:3;?

Python 为什么它会打印;创建的实例数:0“;而不是",;创建的实例数:3;?,python,Python,这是spam.py: class Spam: numInstances = 0 def __init__(self): Spam.numIntances = Spam.numInstances + 1 def printNumInstances(): print("Number of instances created: %s" % Spam.numInstances) 这是另一个file.py

这是spam.py:

  class Spam:
        numInstances = 0
        def __init__(self):
            Spam.numIntances = Spam.numInstances + 1
        def printNumInstances():
            print("Number of instances created: %s" % Spam.numInstances)
这是另一个file.py文件:

from spam import Spam
a = Spam()
b = Spam()
c = Spam()

Spam.printNumInstances()

a.printNumInstances()

为什么它打印“创建的实例数:0”而不是“创建的实例数:3”

您有一些打字错误,
printNumInstances
应该是一个classmethod

class Spam:
    numInstances = 0

    def __init__(self):
        Spam.numInstances = Spam.numInstances + 1

    @classmethod
    def printNumInstances(cls):
        print("Number of instances created: %s" % cls.numInstances)


a = Spam()
b = Spam()
c = Spam()

Spam.printNumInstances()
a.printNumInstances()
输出:

Number of instances created: 3
Number of instances created: 3
可能的重复