Python 2.6.4 属性装饰器无法使用
我在网上和这个论坛上看到很多关于如何在Python中创建带有特殊获取器和设置器的属性的例子。可是,我却无法让这些特殊的获取器和设置器方法正常运行,也无法使用@property装饰器把一个属性变成只读。
我使用的是Python 2.6.4,下面是我的代码。我尝试了不同的方法来使用属性,但都没有成功。
class PathInfo:
def __init__(self, path):
self.setpath(path)
def getpath(self):
return self.__path
def setpath(self, path):
if not path:
raise TypeError
if path.endswith('/'):
path = path[:-1]
self.__path = path
self.dirname = os.path.dirname(path)
self.basename = os.path.basename(path)
(self.rootname, self.dext) = os.path.splitext(self.basename)
self.ext = self.dext[1:]
path = property(fget=getpath, fset=setpath)
@property
def isdir(self):
return os.path.isdir(self.__path)
@property
def isfile(self):
return os.path.isfile(self.__path)
1 个回答
22
PathInfo 必须是 object 的子类。
像这样:
class PathInfo(object):
属性只在新式类中有效。