python:为什么覆盖该类的实例?

本问题已经有最佳答案,请猛点这里访问。

我正在用Python编写一个脚本,使用的是FileHandler类的实例,但是即使没有分配给相同的变量,第二个脚本也会覆盖第一个脚本。

类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class FileHandler():

    name = None
    path = None

    @classmethod
    def __init__(self,name,path):
        self.name=name
        self.path=path

    @classmethod
    def getName(self):
        return self.name

    @classmethod
    def getPath(self):
        return self.path

脚本:

1
2
3
4
5
6
7
import fileHandler

origen=fileHandler.FileHandler('a','b')
destino=fileHandler.FileHandler('c','d')

print origen.getName(),origen.getPath()
print destino.getName(),destino.getPath()

结果:

1
2
c d
c d


您使用__init__方法作为class方法。

对每个方法使用@classmethod将导致一个单例,这就是为什么vars会覆盖。