【发布时间】:2017-07-07 09:43:52
【问题描述】:
我正在使用 FileHandler 类的实例使用 Python 编写脚本,但第二个会覆盖第一个,即使没有分配给相同的变量。
班级:
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
脚本:
import fileHandler
origen=fileHandler.FileHandler('a','b')
destino=fileHandler.FileHandler('c','d')
print origen.getName(),origen.getPath()
print destino.getName(),destino.getPath()
结果:
c d
c d
【问题讨论】:
-
因为你让它们成为类方法,所以那里的自我就是类。然后所有实例共享这些值。只需使用常规方法
-
@Marco 你认为
@classmethod做了什么,你认为什么是类方法? -
停止使用类方法
-
你的方法无论如何都是方法,不需要使用@classmethod,那是完全不同的东西。
-
@TigerhawkT3 是的,是的。更准确的说法是“使用描述符协议实现getter和setter”。但是小步骤,首先,我们需要将 Java 清除掉。